2017-11-30 4 views
1

私はリアルタイムでログを取って、そこにajaxを使ってデータを取得して文書に追加します。文書の変更中にテキストを選択

このログのテキストの一部を選択してコピーできるようにしたいが、新しい行がログに追加されるのと同時に選択を行っていると、それが失われてしまうやり直す。

ここでは一例だ、選択しようと、「ちょっと」と表示され、第2:

\t var div = document.createElement("div"); 
 
\t document.body.appendChild(div); 
 
\t var add = function() { 
 
\t \t div.innerHTML += "<div>hey</div>"; 
 
\t \t if (div.children.length < 100) setTimeout(add, 300); 
 
\t } 
 
\t add();

は、着信履歴を中断せずにいることを解決する方法はありますか?

答えて

0

各実行時に<div>の内容全体を上書きするため、選択が破棄されます。したがって、2番目の行には300 msごとに「新しいちょっと」と表示されます。

動作するはず代わり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();

0

ただappendChild新しいdivinnerHTML +=ではなくボディに送信します。とにかくそれはずっと効率的です。また、選択しているものは、ブラウザが更新している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(); 
関連する問題