document.CreateElement实现

时间:2014-02-28 18:33:29

标签: javascript html xml xml-parsing

我需要一些JavaScript帮助。当我正在使用XML和JavaScript时,我遇到了很多问题。所以我想在我的程序中使用document.createElement("ul") document.createElement("ul")而不是var html = "<li>" + node.nodeName;。因为我需要给出一个合适的样式,并且需要给一些事件附加。所以我需要一些帮助。我正在附加我正在使用的程序的实时小提琴。

Live Fiddle

function generate(node) {
    if (node.nodeType != 1) return "";
    var html = "<li>" + node.nodeName;
    var htmlForChildNodes = "";
    for (var i = 0; i < node.childNodes.length; i++) {
        htmlForChildNodes += generate(node.childNodes[i]);
    }
    if (htmlForChildNodes) {
        html += "<ul>" + htmlForChildNodes + "</ul>";
    }
    html += "</li>";
    return html;
}

谢谢

1 个答案:

答案 0 :(得分:0)

不确定您想要什么,但此示例使用createElement

function generate(node) {
    if (node.nodeType != 1) return "";
    var li = document.createElement('li');
    var span = document.createElement('span');
    span.innerHTML = node.nodeName;
    span.addEventListener("click", function(event) {
        event.target.parentNode.classList.toggle("selected");
    });    
    li.appendChild(span);

    var ul = document.createElement('ul');
    for (var i = 0; i < node.childNodes.length; i++) {
        var r = generate(node.childNodes[i]); 
        if(r!==""){
            ul.appendChild(r);
        }
    }
    li.appendChild(ul);   
    return li;
}

if (window.DOMParser) {
    parser = new DOMParser();
    xmlDoc = parser.parseFromString(txt, "text/xml");
} else { // Internet Explorer
    xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async = false;
    xmlDoc.loadXML(txt);
}

var masterUL = document.createElement('ul');
masterUL.appendChild(generate(xmlDoc.documentElement));
document.body.appendChild(masterUL);

FIDDLE