2016-10-14 7 views
0

私はこのようになりますtest.htmlというファイルがあります。外部HTMLファイルでgetElementsByClassNameを使用できますか?

FOO 
BAR 

:私が望む結果を得るには

<script> 
    var x = document.getElementsByClassName("outside"); 
    for (var i=0;i<x.length;i++) 
    document.write(x[i].getElementsByClassName("inside")[0].childNodes[0].nodeValue); 
</script> 

:私は単純に次のように解析することができます

<!DOCTYPE html> 
<html> 
<body> 
    <div class="outside"> 
    <div class="inside"> 
     FOO 
    </div> 
    </div> 

    <div class="outside"> 
    <div class="inside"> 
     BAR 
    </div> 
    </div> 
</body> 
</html> 

をしかし、別のHTMLファイルでtest.htmlの内容を解析したいと思います。私はこのようにXMLHttpRequestを使用して試してみた:

if (window.XMLHttpRequest) { 
    xmlhttp=new XMLHttpRequest(); 
    } 

xmlhttp.open("GET","test.html",false); 
xmlhttp.send(); 
xmlDoc=xmlhttp.responseXML; 

var x=xmlDoc.getElementsByClassName("outside"); 
for (var i=0;i<x.length;i++) 
document.write(x[i].getElementsByClassName("inside")[0].childNodes[0].nodeValue); 

しかし、それは私に次のエラーを与える:

TypeError: null is not an object (evaluating 'xmlDoc.getElementsByClassName') 

アクセスに問題ではありませんので、私のローカルWebサーバー上のすべてのファイルを使用します。私はこれが確かに最も現代的な構文解析方法ではないことを知っていますが、私はホビープロジェクトのためにローカルで使うつもりです。しかし、jQueryを使ってこれをどのように解決するかについてのご意見があれば、私はどんなアイディアにも公開しています。

+0

まあ.... – epascarello

+0

私はHTMLがXMLHttpRequestをでサポートされるようにすべきで何を読んでから。しかし確かに間違っている可能性があります。 – yayheartbeat

+0

はい、HTMLはXMLではありません – epascarello

答えて

1

文書がHTMLではない場合、responseXMLを使用するのは難しいです。

divのhtmlをresponseTextで設定し、それを照会する必要があります。

有効なXMLではありません

var str = "<ul><li>1</li><li>2</li>"; //xmlhttp.responseText; 
 
var div = document.createElement("div"); 
 
div.innerHTML = str; 
 
var lis = div.getElementsByTagName("li"); 
 
for (var i=0;i<lis.length; i++) { 
 
    console.log(lis[i].textContent); 
 
}

+0

ありがとうございました!私はちょっと(私はちょっとコードが遅いですが)、私はxmlhttp.requestを使ってページ全体を取得できることを知りました。これは私の最終的な作業コード 'var str = xmlhttp.response; var div = document.createElement( "div"); div.innerHTML = str; var x = div.getElementsByClassName( "outside");for(var i = 0; i yayheartbeat

関連する問題