我使用以下代码将一些ul
和li
元素直接附加到DOM中。我正在使用片段并将子节点附加到片段,最后将片段附加到节点。
function updateTree(objArray,leafClass){
var currentElement = document.getElementById(currentNodeId);
currentElement.setAttribute("class",'jstree-open jstree-unchecked');
var fragment = document.createDocumentFragment();
var ulElement = document.createElement('ul');
var i = objArray.length;
//LoopStart
for (var i = 0, j = objArray.length ; i < j; i++ ){
//while(i--){
var liElement = document.createElement('li');
liElement.setAttribute("id", objArray[i].attr.id);
liElement.setAttribute("class",'jstree-closed jstree-unchecked '+leafClass+'');
liElement.innerHTML = "<ins class=\"jstree-icon\"> </ins><a href=\"#\" class=\"\"><ins class=\"jstree-checkbox\"> </ins><ins class=\"jstree-icon\"> </ins>" + objArray[i].data + "</a> ";
if(currentElement.getAttribute("class").indexOf('leaf') > 0){
ulElement.appendChild(liElement);
fragment.appendChild(ulElement);
//$(currentElement.childNodes[1]).removeClass('jstree-laoding');
//console.log("update Tree inside if: " + objArray[i].data);
return "OK";
}
ulElement.appendChild(liElement);
fragment.appendChild(ulElement);
//console.log("update Tree for : " + objArray[i].data);
//}
}
//LoopEnd
currentElement.appendChild(fragment.cloneNode(true));
currentElement.childNodes[1].setAttribute("class","");
//console.log("update Tree end: ");
////console.log("time"+timer.getDiff());
//$(currentElement.childNodes[1]).removeClass('jstree-laoding');
return "OK";
}
代码在IE8和Firefox中工作正常,但在IE7中,我看不到我追加的元素;页面是空白的。
答案 0 :(得分:1)
我不确定,但我猜问题是你的
if(currentElement.getAttribute("class").indexOf('leaf') > 0){
ulElement.appendChild(liElement);
fragment.appendChild(ulElement);
//$(currentElement.childNodes[1]).removeClass('jstree-laoding');
//console.log("update Tree inside if: " + objArray[i].data);
return "OK";
}
我尝试了一个简单的代码
<html><head><script>
function abc(){
alert(document.getElementById("a1").getAttribute("class"));
}
</script>
</head>
<body onload="abc();">
<div id="a1" class="ac"></div>
</body>
</html>
它提醒 ff - &gt; AC ie8 - &gt;空值 ie7 - &gt;空
解决方案:而不是使用getAttribute使用className
并且使用if
块是非常突然的,希望您根据自己的用途进行检查。