黑马程序员技术交流社区

标题: HTML中的id和name的使用有何区别? [打印本页]

作者: 李后量    时间: 2012-9-17 16:04
标题: HTML中的id和name的使用有何区别?
本帖最后由 李后量 于 2012-9-25 21:16 编辑

如题,HTML中对于radio的话,id和name可以很好的区别使用,对于其他的控件呢?如text,它的id和name使用有什么区别?在做ASP.NET一般程序处理的时候就因为把name写成了id而致使程序无法正确运行,症状参见我的求助帖子http://bbs.itheima.com/thread-25870-1-1.html,谁来讲讲它们的区别啊

作者: 林洲    时间: 2012-9-17 16:11
可以这么理解:id是给前台aspx页面,js代码用的;
name:提交到服务器的表单元素,一定要具有name属性;
所有的表单都是提交以name为key,以value为值的内容,其它的属性都不会提交到服务器。
作者: 许庭洲    时间: 2012-9-17 16:28
id 与 name的作用,作为标签的标识符,基本上是一样的,name是老方法,id 是在name基础上发明的。
作者: 侍小波    时间: 2012-9-25 18:38
name原来是为了标识之用,但是现在根据规范,都建议用id来标识元素。

以下只能用name   
   1.   
表单(form)的控件名,提交的数据都用控件的name而不是id来控制。因为有许多name会同时对应多个控件,比如checkboxradio,而id必须是全文档中唯一的。此外浏览器会根据name来设定发送到服务器的request。因此如果用id,服务器是无法得到数据的。
   
   2.    frame
window的名字,用于在其他framewindow指定target
   

以下只能用id
   
   1.    label
form控件的关联,
   
   <label for="MyInput">My    Input</label>   
   <input id="MyInput"    type="text">   
   for
属性指定与label关联的元素的id,不可用name替代。
   
   2.    CSS
的元素选择机制,以#MyId的方式指定应用样式的元素,不能用name替代。
   
   3.   
脚本中获得对象:
   
   IE
支持在脚本中直接以id(而不是name)引用该id标识的对象。例如上面的input,要在脚本中获得输入的内容,可以直接以MyInput.value来获得。如果用DOM的话,则用document.getElementById("MyInput").value,如果要用name的话,通常先得到包含控件的form,例如document.forms[0],然后从form再引用name,注意这样得到的是经过计算后将发送给服务器的值。
   
   
name
id的其他区别是:

   id要符合标识的要求,比如大小写敏感,最好不要包含下划线(因为不兼容CSS)。而name基本上没有什么要求,甚至可以用数字

作者: 郎乐乐    时间: 2012-9-25 19:56
id用到前台来设计的,如果是html页面 JS能用到,asp界面给前台用。
html页面的name是向服务器发送表单时的到的数据。
是以key,value形式在response,过程中传旨的

作者: liuyj    时间: 2012-9-25 20:17
这个你可以理解为id 是在客户端运行的,name是运行在服务器端得。
所以id一般是 js  用的,name是服务器端用的  像asp.net的对象来调用的!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2