日期:2014-05-18  浏览次数:20748 次

getElementById()和getElementByName()有什么区别?
<input     type= "text "     name= "myOptionName "     value= "CSS ">
document.getElementByName( "myOptionName ").value
document.getElementsByName( "myOptionName ").value
document.getElementId( "myOptionName ").value
第一个报错说不支持属性。
第二个得到市空值。
第三个可得到值css。这几个有三名细微区别吗?


------解决方案--------------------
document.getElementByName方法没有。document.getElementsByName得到的是标签的数组
document.getElementId得到的是某一个标签
------解决方案--------------------
getElementByName不存在
只有getElement__S__ByName 和 getElementById

byId的时候,会根据html元素的id属性,根据规范id应当是唯一的,用来标示一个element,比如 <td> , <div> ......。所以返回唯一元素句柄或者null。对于表单控件 <input> <select> <textarea> 等,在不指定id的时候,name也会被视作id,比如 <input type= "text " name= "abc " value= "123 "> 也可以用document.getElementById( "abc ")来获取

而byName,从名字上看,就可以知道,它返回的是复数个对象。它根据name属性(name可以重复),得到所有name属性与参数相同的控件组成的数组,不存在时,返回0长度数组(.length == 0,而不是null)
比如
<input type= "text " name= "abc " value= "1 ">
<input type= "text " name= "abc " value= "2 ">
<input type= "text " name= "abc " value= "3 ">

var array = document.getElementsByName( "abc ");
if (array.length == 0) {
alert( "Error ");
return;
}

for (var i = 0; i < array.length; i++) {
alert(array[i].value);
}