いくつかあり、ユーザーがチェックボックスをオンまたはオフcheckbox lists
にするたびにそれらを更新する必要があります。一部のリストには、数千の.checkboxes
新しい要素の作成は遅いので、避けたいです。したがって、更新中は、それらを削除する代わりに、要素への参照をスタックに保存します。
コードの抜粋を次に示します。
// Save element to buffer. Each element looks like <div><input type="checkbox" /><label>label here</label></div>
while (checkBoxList.firstChild) {
var div = checkBoxList.firstChild;
buffer.push(div);
checkBoxList.removeChild(div);
}
// elided ...
// Getting the new options...
// For each new option try to pop existing element from buffer or create new one if buffer has no elements
var div = buffer.pop();
var divExists = div != undefined;
var checkBox = divExists ? div.firstChild : document.createElement('input');
var label = divExists ? div.lastChild : document.createElement('label');
checkBox.id = newId; // set new id
checkBox.name = newName; // set new name
checkBox.value = newValue // set new value
// elided...
// Append updated (or created one) to checkbox list
checkBoxList.appendChild(div);
この手法は正常に機能しIE
ますが、次の問題が発生します。checkboxes
マウスがそれらの上に置かれたかのように、青色で表示されます(see the screenshot at http://postimage.org/image/z6yeckuz5/).
誰かが同様の問題に直面しましたか? なぜこれが起こるのでしょうか?