问答详情
源自:9-3 getElementsByTagName()方法

为什么getElementById不能写成getElementsById(后面的那个t后有s,而getElementsByName不能写成getElementByName?

function getValue()
          {
              var myH=document.getElementById("myH1");
              alert(myH.innerHTML)
          }
          function getElements()
          {
              var myS=document.getElementsByName("sex");
              alert(myS.length);
          }

          function getTagElements()
          {
              var myI=document.getElementsByTagName("input")
              alert(myI.length);
          }

以上代码var myH=document.getElementById("myH1");如果写成var myH=document.getElementsById("myH1");[这两句语言的区别在于Element后面有个s],会报错;而var myS=document.getElementsByName("sex");与  var myI=document.getElementsByTagName("input"),如果在Element后面没有s,会出现报错。

这个问题出在哪呢?

提问者:WGod 2015-11-03 22:05

个回答

  • wslover
    2015-11-03 22:10:21
    已采纳

    getElementById 是用id选择元素,一个id只能对应一个元素,相当于说一个身份证号只能对应一个人,所不能加s。

    getElementsByName 是用元素名称选择元素,一个元素名称可能有很多元素,取的是集合,相当于说一个名字可能对应着很多人,但不确实到底有几个,要加s。

  • 李晓健
    2015-11-03 22:18:29

    getElementById 是根据ID获取唯一的元素,即使页面有多个相同的id也只返回第一个,所以返回的结果是一个dom元素,而getElementsByName是根据name属性来获取元素的,页面可以有多个name相同的元素,即使只有一个对应的name属性的元素,返回的结果也是一个dom元素的数组。 明显的区别就是一个返回单个元素,所以不能加S,一个返回数组,所以必须要加S。