document.all与getElementById、getElementsByName、getElementsByTagName用法区别-getElementById

 更新时间:2008年12月19日 13:14:08   作者:  
HTML DOM 定义了多种查找元素的方法,除了 getElementById() 之外,还有 getElementsByName() 和 getElementsByTagName()。
不过,如果您需要查找文档中的一个特定的元素,最有效的方法是 getElementById()。
不过要注意的是使用getElementById时对不同的浏览器执行的结果可能是不同的,以下有相关说明
复制代码 代码如下:

text1:
<input name="textName1" type="text" id="textName2" />
<br>
text2:
<input name="textName2" type="text" id="textName1" />
<br>
<input type="button" name="Submit" value="text1" onclick=alert(document.getElementById('textName2').value) />
<input type="button" name="Submit2" value="text2" onclick=alert(document.getElementById('textName1').value) />
我在IE中测试了上面的代码,在第一个文本框中输入1,在第二个文本框中输入2,然后点下面的两个按钮,猜一下结果是什么?
我本意是按钮1返回第一个文本框的值,按钮2返回个文本框的值。
结果是两个按钮都返回了第一个文本框的值。
说明ie执行document.getElementById(elementName)的时候,返回的是第一个name或者id等于elementName的对象,并不是按照ID来查找的。
在fireFox中不存在这样的问题,fireFox执行document.getElementById(elementName)的时候只查找id等于elementName的对象,如果不存在则返回null。
可能IE是考虑的兼容性的问题才这么做的。

以下是我测试所用的代码:

[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]

这个时候我在两个text中输入的值分别为:eee, www
IE中测试结果为:eee , eee
再看当我把<input type="text" name="aaa" id="ccc" >中的id去除时,也即上面代码使用注释中的内容时
我同样输入eee, www
IE中测试结果为:www ,eee
仔细分析上面两个测试的结果:得出结论是:每执行getElementById一次,会将web页面中的所有表单按顺序遍历一次,同时查找id,name两个值,如果存在所要找的id则不再继续查找,如果没有相应的id与之对应则看name值是否与之对应,如果有相应的name与之对应,则不再继续查找。也就是说:
ie执行document.getElementById(elementName)的时候,返回的是第一个name或者id等于elementName的对象,并不是仅按照ID来查找的。
而同样的两个测试在firefox下第一个结果为eee,www,而第二个结果因为没有找到id="ccc"所以返回null
对于这个结果还可参见
https://www.jb51.net/article/16852.htm
他还对getElementById与getElementByName进行了分析,值得一看。

相关文章

  • JS实现鼠标滑过链接改变网页背景颜色的方法

    JS实现鼠标滑过链接改变网页背景颜色的方法

    这篇文章主要介绍了JS实现鼠标滑过链接改变网页背景颜色的方法,涉及js响应鼠标事件动态修改页面元素属性的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • JS动态改变表格边框宽度的方法

    JS动态改变表格边框宽度的方法

    这篇文章主要介绍了JS动态改变表格边框宽度的方法,实例分析了javascript操作table表格中border属性的技巧,需要的朋友可以参考下
    2015-03-03
  • 详解JavaScript实现继承的五种经典方式(附图解)

    详解JavaScript实现继承的五种经典方式(附图解)

    JavaScript中的继承是一种机制,通过它可以创建一个对象,该对象可以享有另一个对象的属性和方法,本文将详细的为大家介绍实现继承的五种经典方式,感兴趣的小伙伴跟着小编一起来看看吧
    2023-08-08
  • 妙用Bootstrap的 popover插件实现校验表单提示功能

    妙用Bootstrap的 popover插件实现校验表单提示功能

    最近使用bootstrap开发项目比较多,在表单校验功能中用popover插件实现出错提示功能很方面,下面小编给大家带来了一篇关于Bootstrap的 popover插件实现校验表单提示功能的实现代码,非常不错,感兴趣的朋友一起看看吧
    2016-08-08
  • JS中showModalDialog关闭子窗口刷新主窗口用法详解

    JS中showModalDialog关闭子窗口刷新主窗口用法详解

    这篇文章主要介绍了JS中showModalDialog关闭子窗口刷新主窗口用法,结合具体实例形式较为详细的分析了showModalDialog常见用法与相关使用技巧,需要的朋友可以参考下
    2017-03-03
  • javascript运动详解

    javascript运动详解

    本文给大家详细介绍下如何使用javascript来实现运动效果,总结的十分全面,附上各种效果的详细示例和演示图,有需要的小伙伴可以参考下。
    2015-07-07
  • layui字体图标 loading图标静止不旋转的解决方法

    layui字体图标 loading图标静止不旋转的解决方法

    今天小编就为大家分享一篇layui字体图标 loading图标静止不旋转的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • JS指定音频audio在某个时间点进行播放

    JS指定音频audio在某个时间点进行播放

    这篇文章主要介绍了JS指定音频audio在某个时间点进行播放,获取当前音频audio的长度,音频时长格式转化,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • 获取dom元素那些讨厌的位置封装代码

    获取dom元素那些讨厌的位置封装代码

    你还在为offset,scroll,inner,client,screen,mouse发愁吗? 头都大了。而且各个浏览器方法还不太一样。所以往往很浪费我们的时间。 于是我产生了写一个方法用户 专门获取这样的数据。
    2010-06-06
  • 数据结构中的各种排序方法小结(JS实现)

    数据结构中的各种排序方法小结(JS实现)

    下面小编就为大家带来一篇数据结构中的各种排序方法小结(JS实现)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07

最新评论