在更改文档时选择文本

时间:2017-11-30 14:41:57

标签: javascript html

我正在制作一个实时记录页面,我用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;
&#13;
&#13;

有没有办法在不中断传入日志的情况下修复它?

2 个答案:

答案 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代替:

&#13;
&#13;
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;
&#13;
&#13;