我正在制作一个实时记录页面,我用ajax获取数据并将其添加到文档中。
我希望能够在此日志中选择和复制部分文本,但如果我在同一时间选择将新行添加到日志中,则会将其混乱并且我有重新开始。
以下是一个例子,尝试选择第二个"嘿"出现了:
var div = document.createElement("div");
document.body.appendChild(div);
var add = function() {
div.innerHTML += "<div>hey</div>";
if (div.children.length < 100) setTimeout(add, 300);
}
add();
&#13;
有没有办法在不中断传入日志的情况下修复它?
答案 0 :(得分:0)
只需appendChild
新的div
到身体,而不是innerHTML +=
。无论如何,那效率要高得多。您选择的任何内容都不会涉及浏览器正在更新的div。
function add() {
var div = document.createElement("div");
div.innerHTML = "log string"; // SECURITY WARNING: don't let user strings in here
document.body.appendChild(div);
// do something to reschedule add
}
add();
答案 1 :(得分:0)
选择被&#34;销毁&#34;因为您在每次运行时都会覆盖整个<div>
内容。所以它是一个新的嘿&#34;在第二行每300毫秒。
使用appendChild
代替:
var div = document.createElement('div');
document.body.appendChild(div);
var add = function () {
var node = document.createElement('div');
node.innerText = 'hey';
div.appendChild(node);
if (div.children.length < 10) setTimeout(add, 300);
};
add();
&#13;