将 HTML 插入 div

IT技术 javascript
2021-01-27 06:03:02

我正在尝试将一段 HTML 插入到 div 中。我想看看纯 JavaScript 方式是否比使用 jQuery 更快。不幸的是,我忘记了如何以“旧”方式进行操作。:P

var test2 = function(){
    var cb = function(html){
        var t1 = document.getElementById("test2");
        var d = document.createElement("div");
        d.id ="oiio";
        d.innerHtml = html;
        t1.appendChild(d);
        console.timeEnd("load data with javascript");
    };
    console.time("load data with javascript");
    $.get("test1.html", cb);
}

伙计们,我做错了什么?

编辑
有人问哪个更快,jquery 或普通 js 所以我写了一个测试:http :
//jsperf.com/html-insertion-js-vs-jquery

普通 js 快 10%

6个回答

我想这就是你想要的:

document.getElementById('tag-id').innerHTML = '<ol><li>html data</li></ol>';

请记住,使用 IE 时,并非所有类型的标签都可以访问 innerHTML。(例如表格元素)

+1 提到 IE 兼容性,希望每个人都这样做!
2021-03-20 06:03:02
是否有任何替代解决方案来插入大的 HTML 代码?如果我们使用上面的方法,我们应该在引号之间写多行HTML代码,这看起来不专业。
2021-03-30 06:03:02

使用 JQuery 可以解决浏览器的不一致问题。使用项目中包含的 jquery 库,只需编写:

$('#yourDivName').html('yourtHTML');

您也可以考虑使用:

$('#yourDivName').append('yourtHTML');

这会将您的图库添加为所选 div 中的最后一项。或者:

$('#yourDivName').prepend('yourtHTML');

这会将其添加为所选 div 中的第一项。

有关这些功能,请参阅 JQuery 文档:

这可以派上用场。谢谢。
2021-04-01 06:03:02
将有助于查看插入一长串 Html 的示例。例如,我有一个不允许使用服务器技术(php 等)的情况,我想在同一页面内重新使用大约 20 行 html。
2021-04-06 06:03:02
OP 专门要求使用纯 javascript,但这对我有帮助,所以我仍然认为它很有用。
2021-04-07 06:03:02

我使用“+”(加号)将 div 插入到 html 中:

document.getElementById('idParent').innerHTML += '<div id="idChild"> content html </div>';

希望这有帮助。

这将删除所有事件侦听器
2021-03-19 06:03:02
还删除以前的并行节点值。
2021-04-03 06:03:02

作为替代方案,您可以使用insertAdjacentHTML - 但是我深入研究并进行了一些性能测试 - (2019.09.13 Friday)MacOs High Sierra 10.13.6 on Chrome 76.0.3809(64 位),Safari 12.1.2(13604.5.6), Firefox 69.0.0(64 位))。测试F仅供参考 - 它超出了问题范围,因为我们需要动态插入 html - 但在F我通过“手动”(以静态方式)进行 - 理论上(据我所知)这应该是插入新 html 元素的最快方法。

在此处输入图片说明

概括

  • innerHTML =(不要混淆+=)是最快的(野生每秒48K操作,火狐43K运算/秒,铬23K运算/秒)的是〜31%速度低于理想的解决方案˚F仅铬,但是,Safari和Firefox更快( !)
  • innerHTML +=...是最慢的所有浏览器(浏览器95的运算/秒,火狐88运算/秒,Sfari 84运算/秒)
  • 所述d jQuery是第二慢所有的浏览器(14的Safari运算/秒,火狐11K运算/秒,铬7K运算/秒)
  • 参考解决方案F(理论上最快)在 firefox 和 safari(!!!)上并不是最快的——这令人惊讶
  • 最快的浏览器是 Safari

为什么更多信息innerHTML =是远远快于innerHTML +=在这里您可以在这里在您的机器/浏览器上执行测试

奇怪的是,我听说innerHTML 应该比insertAdjacentHTML 慢得多,通常慢几个数量级,因为innerHTML 解析整个文档并对它进行奇怪的字符串处理,而insertAdjacentHTML 只是将它插入到需要的地方。不知道为什么现在这里是相反的?也许一些性能更新或什么?
2021-03-23 06:03:02

许多行可能看起来像这样。这里的 html 只是示例。

var div = document.createElement("div");

div.innerHTML =
    '<div class="slideshow-container">\n' +
    '<div class="mySlides fade">\n' +
    '<div class="numbertext">1 / 3</div>\n' +
    '<img src="image1.jpg" style="width:100%">\n' +
    '<div class="text">Caption Text</div>\n' +
    '</div>\n' +

    '<div class="mySlides fade">\n' +
    '<div class="numbertext">2 / 3</div>\n' +
    '<img src="image2.jpg" style="width:100%">\n' +
    '<div class="text">Caption Two</div>\n' +
    '</div>\n' +

    '<div class="mySlides fade">\n' +
    '<div class="numbertext">3 / 3</div>\n' +
    '<img src="image3.jpg" style="width:100%">\n' +
    '<div class="text">Caption Three</div>\n' +
    '</div>\n' +

    '<a class="prev" onclick="plusSlides(-1)">&#10094;</a>\n' +
    '<a class="next" onclick="plusSlides(1)">&#10095;</a>\n' +
    '</div>\n' +
    '<br>\n' +

    '<div style="text-align:center">\n' +
    '<span class="dot" onclick="currentSlide(1)"></span> \n' +
    '<span class="dot" onclick="currentSlide(2)"></span> \n' +
    '<span class="dot" onclick="currentSlide(3)"></span> \n' +
    '</div>\n';

document.body.appendChild(div);