黑马程序员技术交流社区

标题: 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-17 16:39
id的主要用途:
在客户端页面作为对象的唯一表示,同一个页面中不允许出现多个相同的id.可以使用javascript的document.getElementById('id')来获取对象.

name的具体用途有:

用途1:
作为可与服务器交互数据的HTML元素的服务器端的标示,比如input、select、textarea、和button等。我们可以在服务器端根据其name通过Request["name"]取得元素提交的值。

用途2:
HTML元素input type='radio'分组,我们知道radio button控件在同一个分组类,check操作是mutex的,同一时间只能选中一个radio,这个分组就是根据相同的name属性来实现的。

用途3:
建立页面中的锚点,我们知道<a href="url">link</a>是获得一个页面超级链接,如果不用href属性,而改用name,如:<a name="PageBottom"></a>,我们就获得了一个页面锚点。

用途4:
作为对象的identity,如Applet、Object、Embed等元素。比如在Applet对象实例中,我们将使用其name来引用该对象。

用途5:
在img元素和map元素之间关联的时候,如果要定义img的热点区域,需要使用其属性usemap,使usemap="#name"(被关联的map元素的name)。

用途6:
某些特定元素的属性,如attribute,和param。例如为Object定义参数<param name = "appletParameter" value= "value">。

用途7:
name属性也可以作为客户端对象的标识,可以使用javascript的document.getElementByName('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