您的位置:首页 > 其它

getElementsByName和getElementById的区别、用法

2012-08-20 18:28 411 查看
http://hi.baidu.com/jingutian/blog/item/bf1a66dd74e12f315982dd81.html

首先需要注意的是getElementsByName而不是getElementByName,多一个s。

其次需要注意的是firefox浏览器下,如果用到getElementsByName
必须设置id,比如

<input type=text id="test1" name="test1">.

在ie下id可以不要,但firefox下如果没有id属性,就得不到正确的结果。

document.getElementsByName得到的是标签的数组。

document.getElementId得到的是某一个标签。

比如一个radio用getElementsByName和getElementById得到的结果是不一样的。

getElementById得到的是radio的第一个元素。

而getElementsByName得到的是radio的所有元素的数组。

而在比如

<input type="text" name="text1" value="test text">

<script>

document.getElementsByName("text1").value

document.getElementById("text1").value

</script>

document.getElementsByName("text1").value得到的是undefined(未定义)。

而 document.getElementById("text1").value得到的值是test text。

可见getElementsByName和getElementById的作用是不同的,我们不能把他们混为一谈。

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

而getElementsByName从名字上看,就可以知道,它返回的是复数个对象。它根据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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐