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); 
    } 
}