私の HTML には、php スクリプトによって作成され、JQuery と Javascript で処理される記事を含むコンテンツ div があります。Javascript では、これらの記事を「getElementsByClassName」関数で配列に収集します。ここで書いているスクリプトと HTML は単純化されています。配列の長さが 10 より大きい場合、ページごとに 10 個の記事のみが表示されるようにしようとしているため、この配列が必要です。したがって、ページ 1 は配列のインデックス 0 から 9 になり、ページ 2 はインデックス 10 から 19 になります。
このhtmlコードを取ります。
<body>
<div id="content">
<div class="article">
<p>Article 1</p>
</div>
<div class="article">
<p>Article 2</p>
</div>
<div class="article">
<p>Article 3</p>
</div>
</content>
</body>
そして、このJavascriptコード。
$.post("getarticles.php",{ page:"home" } ,function(data){
//place the content
document.getElementById("content").innerHTML = jQuery.trim(data);
//put elements in array
arrArticles = document.getElementsByClassName("article");
alert(arrArticles.length);
document.getElementById("content").innerHTML = "";
alert(arrArticles.length);
})
最初のアラートでは「3」が表示されますが、これは正しいです..しかし、2 番目のアラートでは「0」が表示されます。要素が配置された後に配列の要素が失われるのはなぜですか?
ちなみに、「data」変数は、php スクリプトによって渡される HTML の文字列です。例:phpスクリプトにはコードがあります
echo "<div class="article"><p>Article 1</p></div><div class="article"><p>Article 2</p></div><div class="article"><p>Article 3</p></div>"
&
document.getElementById("contentWrap").innerHTML = "";
これが問題の原因であることはわかっていますが、その理由はわかりません。誰かが代替案を説明または提供できますか?
前もって感謝します