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

问题描述

HTMLDOM定义了多种查找元素的方法,除了getElementById()之外,还有getElementsByName()和getElementsByTagName()。不过,如果您需要查找文档中的一个特定的元素,最有效的方法是getElementById()。不过要注意的是使用getElementById时对不同的浏览器执行的结果可能是不同的,以下链接有相关说明http://blog.csdn.net/mmcgzs/archive/2007/03/25/1540250.aspx以下是我测试所用的代码:<html><head><title>document.alltest</title><scriptlanguage="javascript">functionview(){varobj=document.getElementById("ccc");alert(obj.value);obj=document.getElementById("aaa");alert(obj.value);}</script></head><body><formname="form1"id="f1"><!--<inputtype="text"name="aaa">--><inputtype="text"name="aaa"id="ccc"><inputtype="text"name="ccc"id="aaa"><inputtype="button"name="bbb"value="click"onclick="view();"></form></body></html>这个时候我在两个text中输入的值分别为:eee,wwwIE中测试结果为:eee,eee再看当我把<inputtype="text"name="aaa"id="ccc">中的id去除时,也即上面代码使用注释中的内容时我同样输入eee,wwwIE中测试结果为:www,eee仔细分析上面两个测试的结果:得出结论是:每执行getElementById一次,会将web页面中的所有表单按顺序遍历一次,同时查找id,name两个值,如果存在所要找的id则不再继续查找,如果没有相应的id与之对应则看name值是否与之对应,如果有相应的name与之对应,则不再继续查找。也就是说:ie执行document.getElementById(elementName)的时候,返回的是第一个name或者id等于elementName的对象,并不是仅按照ID来查找的。而同样的两个测试在firefox下第一个结果为eee,www,而第二个结果因为没有找到id="ccc"所以返回null对于这个结果还可参见blog:http://www.cnblogs.com/Jinglecat/archive/2006/10/18/532764.html他还对getElementById与getElementByName进行了分析,值得一看。

解决方案

解决方案二:
支持了。。。
解决方案三:
去掉id="ccc"LZ试过没?IE下getElementById能获到dom吗?
解决方案四:
推荐你学学jQuery吧,然后就不会纠结这些问题了
解决方案五:
如果用id起名,最好在页面上唯一
解决方案六:
没试过,不知道值到去看看
解决方案七:
顶一个,IE9不存在该问题。
解决方案八:
平时用jquery多.

时间: 2024-12-01 05:02:06

document.all与getElementById、getElementsByName、getElementsByTagName用法区别-getElemen的相关文章

document.all与getElementById、getElementsByName、getElementsByTagName用法区别-document.all第1/2页_javascript技巧

Example Heading This is a paragraph. It is only a paragraph. Yet another paragraph. This final paragraph has special emphasis.

getElementByid ,ByName ByTagName三者区别

getElementByid ,getElementsByName getElementsByTagName三者区别 getElementById: 语法: document.getElementById(id) 参数:id :必选项为字符串(String) 返回值:对象; 返回相同id对象中的第一个,如果无符合条件的对象,则返回 null example:document.getElementById("id1").value; getElementsByName: 语法: docu

总结js在IE与FireFox中不同的用法区别

总结js在ie与firefox中不同的用法区别 1. document.form.item 问题 问题: 现有代码中存在许多 document.formname.item("itemname") 这样的语句,不能在firefox下运行 解决方法: 统一使用 document.formname.elements["elementname"]          2. 集合类对象问题   问题: ie下,可以使用()或[]获取集合类对象:firefox下,只能使用[]获取

exp/imp与expdp/impdp的用法区别

exp/imp与expdp/impdp的用法区别 1:把用户usera的对象导到用户userb,用法区别在于fromuser=usera touser=userb ,remap_schema='usera':'usera' .例如 imp system/passwd fromuser=usera touser=userb file=/oracle/exp.dmp log=/oracle/exp.log; impdp system/passwd directory=expdp dumpfile=e

php中sprintf与printf函数用法区别

 这篇文章主要介绍了php中sprintf与printf函数用法区别解析,需要的朋友可以参考下 下面是一个示例:四舍五入保留小数点后两位    代码如下: <?php $num1 = 21; echo sprintf("%0.2f",$num1)."<br />"; //输出 21.00 $num2 = 16.3287; echo sprintf("%0.2f",$num2)."<br />";

model-NET MVC和三层的数据层是否可以一起使用,用法区别?

问题描述 NET MVC和三层的数据层是否可以一起使用,用法区别? 请问MVC模式结合三层框架怎么实现啊? MVC的model和数据持久层可以并用吗? 解决方案 数据持久层用M就行. 如:hibernate 只是作为数据持久化框架使用,作为MVC中的M(module)来使用,通过ORM映射将表映射成对象,通过对映射出的对象的操作来改变表,仅作为MVC的一部分 解决方案二: 三层是三层,MVC是MVC,它们毫无关系的. 三层是从整个应用程序架构的角度来分的三层(如果程序需要,还可以分多层). 三层

浅析php静态方法与非静态方法的用法区别_php技巧

在php编程中,static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为"类属性"或"类方法" 如果访问控制权限允许,可不必创建该类对象而直接使用类名加两个冒号"::"调用. static关键字可以用来修饰变量.方法. 不经过实例化,就可以直接访问类中static的属性和static的方法. static 的属性和方法,只能访问static的属性和方法,不能类访问非静态的属性和方法.因为静态属性

PHP中exec与system用法区别分析_php技巧

本文实例讲述了PHP中exec与system用法区别,分享给大家供大家参考之用.具体方法如下: 一般来说,在PHP中调用外部命令,可以用exec及system来实现: system() 原型:string system (string command [, int return_var]) system()函数很其它语言中的差不多,它执行给定的命令,输出和返回结果.第二个参数是可选的,用来得到命令执行后的状态码. 返回结果: 成功返回0,   失败(命令不存在等原因)   返回   非0值 ex

数据库SQL中having和where的用法区别_MsSql

"Where" 是一个约束声明,使用Where来约束来之数据库的数据,Where是在结果返回之前起作用的,且Where中不能使用聚合函数. "Having"是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作,在Having中可以使用聚合函数.  聚合函数,SQL基本函数,聚合函数对一组值执行计算,并返回单个值.除了 COUNT 以外,聚合函数都会忽略空值. 聚合函数经常与 SELECT 语句的 GROUP BY 子句一起使用. Transact-SQL编