パーマリンク | 2007年09月14日 14:35
IDではなくタグの名前でオブジェクトを取得したい場合、getElementsByTagNameを利用する。
クリックでid="gEBTN" 内のliオブジェクトを取得してHTMLを含むliの中身をid="gEBTNresult"に書き出す。
<script language="javascript" type="text/javascript">
function Test(){
var li = document.getElementById("gEBTN").getElementsByTagName("li");
var result = document.getElementById("gEBTNresult");
for($i=0; $i<li.length; $i++){
result.innerHTML += "<li>" + li[$i].innerHTML + "<\/li>";
}
}
</script>
<div id="gEBTN">
<ul>
<li>getElementsByTagNameのテスト</li>
<li>getElementsByTagNameのテスト2</li>
<li><span class="redbold">getElementsByTagNameのテスト3</span></li>
</ul>
</div>
getElementsByTagNameは取得要素を配列で返しますがArrayオブジェクトではないようです。lengthや添え字は使えますがメソッドが使えない・・・
なんかよくわからん・・・
よくわからなかったことについてなんとなく解決
getElementsByTagName()が返すのは配列ではなくNodeListオブジェクト。 プロパティはlength、メソッドはitem()をもつ読み取り専用のオブジェクト。
javascriptではNodeListオブジェクトは配列のように振舞うのでli[n]で 要素にアクセスできますがNodeListはObjectを継承しているので Arrayオブジェクトのメソッドは利用できないってことだと思う。