簡體   English   中英

Element.children無法在Chrome上運行

[英]Element.children not working on Chrome

我已經閱讀了有關element.children所有文檔(例如MDN ),但仍無法在Google Chrome瀏覽器上正常運行。 我正在使用的代碼段:

<html><head>
    <script src="loadxmldoc.js"></script>
</head>
<body><script>
xmlDoc=loadXMLDoc("books.xml");

    document.write("<table border='1'>");
    var x=xmlDoc.getElementsByTagName("day");
    for (var i=0;i<x.length;i++){
    document.write("<td><table border='1'>");
    document.write("<tr><td>" + x[i].getAttribute("id") + "</td></tr>");

        var y=xmlDoc.getElementsByTagName("time");

        for (var j=0;j<y.length;j++){
            document.write("<tr><td><table border='1'>");
            document.write("<tr><td>Location: " + y[j].getAttribute("id") + ": ");
            document.write("</table></td></tr>");
    }
    document.write("</table></td>");
}
document.write("</table>");
</script></body></html>

問題是, getElementsByTagName每次使y.length 16,而不是3、3、3、3、1。 我確實使用了childNodes ,但是其中包含了文本元素。 我用var y=x.item(i).children; 但不適用於Chrome。 它確實可以在FF上運行,這使我相信Chrome不支持它,或者我腦子里缺少東西。 但是, 我發現的所有文檔都說這應該適用於Chrome。

這是.children的正確用法,還是Chrome出問題了?

我要感謝@Felix Kling為我提供的答案。

僅供參考,.item在FF中起作用的原因是,FF返回HTMLCollection,而Chrome返回NodeList。 –費利克斯·克林(Felix Kling)

.children只適用於的HTMLCollection。 NodeList需要手動完成。 我挑選了元素節點並將它們放入數組中。

var x=xmlDoc.getElementsByTagName("day");
if(isFirefox){   //alternately, you can detect if HTMLCollection
    var y=x.item(i).children;
    document.write(y.length);
}
if(isChrome){    //alternately, you can detect if NodeList
    var y = new Array();
    var currentChild = x.item(i).firstChild;

    while(currentChild!=null){
        if(currentChild.nodeType == Node.ELEMENT_NODE){
            y[y.length]=currentChild;
        }
        currentChild=currentChild.nextSibling;
    }
}
for (var j=0;j<y.length;j++){
    /* loop */
}

在我的Chrome版本27上,以下工作正常:

[].forEach.call (document.body.children, function (e) { console.log (e); });

就像在Firefox 16上一樣

http://jsfiddle.net/jstoolsmith/3rBTF/上嘗試

試試childNodes ,這是一個標准屬性。 children屬性可能不適用於所有瀏覽器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM