0

任何人都可以請詳細解釋一下getElementsByTagName,具體如何正確地遍歷getElementsByTagName返回的節點列表。需要關於使用getElementsByTagName的一些建議

這是我的簡單腳本,我希望在警報窗口中顯示選定的索引,但使用getElementsByTagName。我知道這可能不是爲了獲得所選擇的選項值使用getElementsByTagName一個很好的解決方案,但我仍想用getElementsByTagName,因爲它可以幫助我更好地理解它是如何工作

<script language="JavaScript"> 
<!-- 
    function process(){ 
    var a = document.getElementById('mySelect'); 
    var res = a.options[a.selectedIndex].text; 

    alert(res); 
    } 
//--> 
</script> 

這裏是HTML片段:

<body> 
<select name=""id="mySelect" onchange="process()"> 
    <option>1</option> 
    <option>2</option> 
    <option>3</option> 
    <option>4</option> 
    <option>5</option> 
</select> 

所以我的問題是:

誰能告訴我如何使THI s腳本使用getElementsByTagName而不是getElementById

非常感謝!

回答

0

getElementById返回單個元素,因爲ID應該是唯一的,所以如果給定的ID存在,應該只有一個元素返回。

getElementsByTagName返回一個NodeList對象,其中包含具有給定標籤名稱的所有元素。

<script language="JavaScript"> 
<!-- 
    function process(){ 
    var a = document.getElementsByTagName('select'); 
    var res = a[0].options[a[0].selectedIndex].text; 

    alert(res); 
    } 
//--> 
</script> 
+0

從技術上講,'getElementsByTagName'返回一個NodeList對象,它是一個類似數組的對象。它具有'.length'屬性並被索引,但其他數組方法(如.pop())將不起作用。 https://developer.mozilla.org/En/DOM/NodeList – Blazemonger

+0

優秀點將更新,以反映這一點。 – Jrod

3

使用的getElementById獲得選擇和的getElementsByTagName閱讀選項

function process(){ 
    var sel = document.getElementById("mySelect"); 
    var opts = sel.getElementsByTagName("option"); 
    for(var i=0;i<opts.length;i++){ 
     if(opts[i].selected){ 
      alert(opts[i].innerHTML); 
      break; 
     } 
    } 
} 

Example

使用的getElementsByTagName來獲得選擇和的getElementsByTagName得到選項

function process(){ 
    var sels = document.getElementsByTagName("select"); 
    for(var i=0; i<sels.length;i++){ 
     var opts = sels[i].getElementsByTagName("option"); 
     for(var j=0;j<opts.length;j++){ 
      if(opts[j].selected){ 
       alert(opts[j].innerHTML); 
       break; 
      } 
     } 
    } 
} 

使用getElementsByTag名得到選擇和選擇ns object

function process(){ 
    var sels = document.getElementsByTagName("select"); 
    for(var i=0; i<sels.length;i++){ 
     var sel = sels[i]; 
     alert(sel.options[sel.selectedIndex].text); 
    } 
}