2017-08-17 6 views
0

私はXMLHttpRequestのからXMLファイルを使用して解析しています:x [i] .parentElement.NodeNameは、エクスプローラ以外のすべてで機能します。どうして?

var newCategory = articles[i].parentElement.nodeName; 

私が働いているXML構造を:私はラインに私のバグを突き止めました

var xhttp = new XMLHttpRequest(); 
xhttp.onreadystatechange = function() { 
    if (this.readyState == 4 && this.status == 200) {  
    loadItems(this); 
    } 
}; 
xhttp.open("GET", "articles.xml", true); 
xhttp.send(); 

function loadItems(xml) { 
    var xmlDoc = xml.responseXML; 
    var items = xmlDoc.getElementsByTagName("item"); 
    for(var i = 0; i < items.length; i++){ 
    //Next line is where the script crashes... 
    var newCategory = articles[i].parentElement.nodeName; 
    alert(newCategory); 
    } 
} 

これは、この行でスクリプトが静かにクラッシュするInternet Explorer以外のすべてのブラウザで機能しているようです。他のブラウザでは、newCategoryは各項目の親ノードに応じて文字列 "category"または "newcategory"を持ちます。

私はWindowsのドキュメントを見て、parentElementとnodeNameの両方のアクセサがサポートされていると言いますが、なぜIEでスクリプトがクラッシュするのでしょうか?

+0

「機能しますか?」とはどういう意味ですか?それが「うまくいかない」とはどういう意味ですか? –

+0

私は言い換えれば、スクリプト内のすべてを正常に完了/実行することを意味します。さもなければ、それは静かにその行のIEでクラッシュします。 – Kral

+0

IEはそれを発明したので驚くことはほとんどありませんが、まずエラーを再現できるように十分なデータを提供する必要があります。 "作品"/"作品はありません"、私たちが見ることができないものです。問題の原因は、間違ったdoctypeを使用するのと同じくらい遠いです。 –

答えて

1

Internet Explorerのドキュメントを調査したところ、Firefox/Chrome/OperaとExplorerで動作するparentNodeアクセサがあることがわかりました。

var newCategory = articles[i].parentNode.nodeName; 
0

私は同様の問題がありました。 .nodeNameの代わりに.nodeValueを使用してください。

+0

問題は私がノードの内容を望まないことです。私は実際にI.Eと呼ばれるものが欲しい。 "category"または "newcategory"。 – Kral

+0

'articles [i] .parentElement.attributes [0] .nodeName'や' articles [i] .attributes [0] .name'のようなことができます – Techassi

関連する問題