我被告知不要element.innerHTML += ...
像这样添加内容:
var str = "<div>hello world</div>";
var elm = document.getElementById("targetID");
elm.innerHTML += str; //not a good idea?
这有什么问题?我还有什么其他选择?
每次innerHTML
设置时,都必须解析HTML,构造DOM并将其插入文档中。这需要时间。
例如,如果elm.innerHTML
有数千个div,表,列表,图像等,则调用.innerHTML += ...
将导致解析器重新重新解析
所有这些内容 。这也可能破坏对已经构造的DOM元素的引用,并引起其他混乱。实际上,您要做的就是在末尾附加一个新元素。
最好只致电appendChild
:
var newElement = document.createElement('div');
newElement.innerHTML = '<div>Hello World!</div>';
elm.appendChild(newElement);
这样,将elm
不会再次解析的现有内容。
注意: [某些]浏览器可能足够聪明,可以优化+=
操作员,而不重新解析现有内容。我还没有对此进行研究。
这段代码是我用Java Swing制作的Tic-Tac-Toe程序的一部分。为什么在添加用于添加按钮的for语句时返回NullPointerException?
错误:无法找到或加载主类MyGridLayout.MyGridLayout C:\users\home\AppData\local\netbeans\cache\8.2\executor-snippets\run.xml:53:Java返回:1构建失败(总时间:0秒)
我正在做一个编码练习:给定一个整数序列作为一个数组,确定是否可以通过从数组中删除不超过一个元素来获得严格递增的序列。 所以我写了这段代码: 现在,这段代码似乎适用于大多数序列,但这段代码引发了一个错误: 错误如下: 我只是不明白列表索引怎么可能超出范围…有人有线索吗?
下面是我遇到错误的程序: //导入扫描程序类导入java。util。扫描仪; 这些是我得到的错误:
注释了println语句,但未注释unicode。为什么?
令牌“if”的语法错误(应在此令牌之后 谢谢你的建议!