| document.getElementById与getElementByName的区别
					当前位置:点晴教程→知识管理交流
					
					→『 技术文档交流 』
					
				 
 1:id   就像身分证号,是唯一的,   name   就像姓名一样可以同名   [br][br]2:一个元素定义了   id   ,引用该元素时直接用   id   属性,而   name   通常用在   form   中,且必须由   document.form.***   而来,也就是说,   name   属性定义的元素在脚本中是   document   对象的子对象。   [br][br]3:name   用于   form   内元素,提交需要   [br][br]id   用于   form   外元素好用因为   dom   能直接取得单一元素   [br][color=red]document.getelementbyid( "id_number ")   得到的是单个元素   [br][br]document.getelementsbyname( "name ")   得到的是数组   [/color][br][br]4:id   每页只能有一个   [br][br]name   可以有多个   [br][br]name   有些标签不推荐用它   [br][br]取得   id   :document.getelementbyid( "idname ")   [br][br]取得   name   :   document.getelementsbyname( "name ")[0?1?2?3?....]   [br][br]5: 表单元素   (form   input   textarea   select)   与框架元素   (iframe   frame)   用   name   [br][br]这些元素都与表单   (   框架元素作用于   form   的   target)   提交有关   ,   在表单的接收页面只   [br][br]接收有   name   的元素   ,   赋   id   的元素通过表单是接收不到值的   ,   你自己可以验证一下   .   [br][br]有一个例外   :   a   可以赋   name   作为锚点   ,   也可以赋   id   ;   [br][br]    [br][br]只能赋   id   不能赋   name   的元素     除去与表单相关的元素都只能赋   id)   [br][br]body   li   table   tr   td   th   p   div   span   pre   dl   dt   dd   font   b   等等。   [br][br]6:几乎每个做过   web   开发的人都问过,到底元素的   id   和   name   有什么区别阿?为什么有了   id   还要有   name   呢   ?   而同样我们也可以得到最   classical   的答案:   id   就像是一个人的身份证号码,而   name   就像是他的名字,   id   显然是唯一的,而   name   是可以重复的。   [br][br]上周我也遇到了   id   和   name   的问题,在页面里输入了一个   input   type= "hidden "   ,只写了一个   id= 'sliceinfo '   ,赋值后   submit   ,在后台用   request.params[ "sliceinfo "]   却怎么也去不到值。后来恍然大悟因该用   name   来标示,于是在   input   里加了个   name= 'sliceinfo '   ,就一切   ok   了。   [br][br] 第一段里对于   id   和   name   的解答说的太笼统了,当然那个解释对于   id   来说是完全对的,它就是   client   端   html   元素的   identity   。而   name   其实要复杂的多,因为   name   有很多种的用途,所以它并不能完全由   id   来代替,从而将其取消掉。   [br][br][br]  具体用途有:   [br]  用途   1:     作为可与服务器交互数据的   html   元素的服务器端的标示,比如   input   、   select   、   textarea   、和   button   等。我们可以在服务器端根据其   name   通过   request.params   取得元素提交的值。   [br][br]  用途   2:     html   元素   input   type= 'radio '   分组,我们知道   radio   button   控件在同一个分组类,   check   操作是   mutex   的,同一时间只能选中一个   radio   ,这个分组就是根据相同的   name   属性来实现的。 [br]  用途   3:     建立页面中的锚点,我们知道    link    是获得一个页面超级链接,如果不用   href   属性,而改用   name   ,如:       ,我们就获得了一个页面锚点。   [br][br]  用途   4:     作为对象的   identity   ,如   applet   、   object   、   embed   等元素。比如在   applet   对象实例中,我们将使用其   name   来引用该对象。   [br][br][br]  用途   5:     在   img   元素和   map   元素之间关联的时候,如果要定义   img   的热点区域,需要使用其属性   usemap   ,使   usemap= "#name "(   被关联的   map   元素的   name)   。   [br][br]  用途   6:     某些特定元素的属性,如   attribute   ,和   param   。例如为   object   定义参数      。   [br][br][br]  显然这些用途都不是能简单的使用   id   来代替掉的,所以   html   元素的   id   和   name   的却别并不是身份证号码和姓名这样的区别,它们更本就是不同作用的东西。   [br][br]  当然   html   元素的   name   属性在页面中也可以起那么一点   id   的作用,因为在   dhtml   对象树中,我们可以使用   document.getelementsbyname   来获取一个包含页面中所有指定   name   元素的对象数组。 [br][br]  在这里顺便说一下,要是页面中有   n(n> 1)   个   html   元素的   id   都相同了怎么办?在   dhtml   对象中怎么引用他们呢?如果我们使用   aspx   页面,这样的情况是不容易发生的,因为   aspnet   进程在处理   aspx   页面时根本就不允许有   id   非唯一,这是页面会被抛出异常而不能被正常的   render   。要是不是动态页面,我们硬要让   id   重复那   ie   怎么搞呢?   [br][br][br]  这个时候我们还是可以继续使用   document.getelementbyid   获取对象,只不过我们只能获取   id   重复的那些对象中在   html   render   时第一个出现的对象。而这时重复的   id   会在引用时自动变成一个数组,   id   重复的元素按   render   的顺序依次存在于数组中。
 该文章在 2010/7/14 1:36:51 编辑过 | 关键字查询 相关文章 正在查询... |