2011-06-25 32 views
0

Ajaxで新機能ですが、getelementbyidを使用してそのIDを持つページの要素を更新できることがわかりました。私が知りたいことは、それらがすべて同じIDを持つ場合、どのようにページの特定の要素をターゲットにするかということです。getElementByIdを使用してページに要素を設定する

<li class="a">something</li><li class="a">something b</li> 

第2世代のターゲットを設定するにはどうすればよいですか?彼らは両方が同じidを使用しているので、getelementbyid( 'a')を使用することはできません。これは、そのidで最初の要素のみを更新するためです。

これは

function loadurl(dest) { 
var XMLHttpRequestObject = false; 
if (window.XMLHttpRequest) { 
     XMLHttpRequestObject = new XMLHttpRequest(); 
    } else if (window.ActiveXObject) { 
     XMLHttpRequestObject = new 
     ActiveXObject("Microsoft.XMLHttp"); 
} if(XMLHttpRequestObject) { 
     XMLHttpRequestObject.open("GET", dest); 
     XMLHttpRequestObject.onreadystatechange = function() { 

    if (XMLHttpRequestObject.readyState == 4 && 
     XMLHttpRequestObject.status == 200) { 
     document.getElementById("a").innerHTML = 
     XMLHttpRequestObject.responseText; 
     delete XMLHttpRequestObject; 
     XMLHttpRequestObject = null; 
     } 
    } 
    XMLHttpRequestObject.send(null); 
} 

}

私のAjaxのスクリプトであり、これは代わりにクラス名を使用して、IDを繰り返さないでくださいリンク

<a onclick="loadurl('page.php?p=1&id=2')"> 
+6

IDを再利用しないでください。それが今あなたが苦労している理由です。要素をグループ化するには、クラス名を使用します。 IDは、単一のDOM要素を一意に識別します。 – BonyT

+0

ポインタとして: 'getElementById()'が、例えばgetElementsByClassName()の複数の名前とは対照的に、単数形の名前を持つ理由は、それが適用され、見つかる/操作されるべきであるからです。唯一の***要素。 –

答えて

0

HTMLページで同じIDを複数回使用すると、HTMLが無効になります。あなたの代わりにクラス名を使用していた場合:

<li class="a">something</li><li class="a">something b</li> 

を、あなたはそのクラスを持つすべての要素を含む配列を取得するために)(document.getElementsByClassNameを使用することもできました。

このようなものを使用、第二の要素にあなたの応答を置くために:

document.getElementsByClassName("a")[1].innerHTML = XMLHttpRequestObject.responseText; 

または、このようなものを使用し、そのクラス名を持つ要素のすべてのあなたの応答を置くために:

var els = document.getElementsByClassName("a"); 
for (var i = 0; i < els.length; ++i) 
    els[i].innerHTML = XMLHttpRequestObject.responseText; 
+0

タグをclassに変更しました!では、上記のコードで作業するために技術を実装するにはどうすればよいですか? – Jay

+0

私はいくつかの実装例を示すために答えを編集しました。 – Gaurav

+0

thanx G、それは私が手動で番号(1)を入力しなければならないということですか? LIがリストの20位または8位の場合はどうなりますか?どのようにこれを検出し、スクリプトがこれを選択することを確認しますか? – Jay

2

です。 IDは一意であることを意味します。

<li class="a">something</li><li class="a">something b</li> 

次に、jQueryなどを使用して選択できます。

$(".a") 
+1

あるいは 'document.getElementsByClassName( 'a');'と 'for'(または他の)ループを使って同じことをすることができます。 jQueryはすべてに必要というわけではありません(本当に本当に良い...)。 –

+0

@Davidもちろんありませんが、存在するので、読みやすさを向上させるために使用することをお勧めします。 – bevacqua

+1

真実ですが、ライブラリの違いと(たぶん)メリットを示すために、バニラ-JSのアプローチは、ライブラリアプローチ、jQuery、MooToolsなどのアドインダに適用されていると思います。 –

関連する問題