html里name和id的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了html里name和id的区别相关的知识,希望对你有一定的参考价值。

name是用来提交表单数据,那id是拿来干嘛的

ID和Name都可以用来标识一个标记,javascript分别有两个方法getElementById和getElementByName来定位Dom节点。
区别如下:
1、我们知道在网页做Post提交时,是以Form(即表单域)为单位进行提交的,一个Form里有若干个表单对象(如<input type="text" name="UserName" value="请输入姓名"/>),同一个页面里可以为多个Form(Asp.net不同,它只允许有一个,且名字必须为Form1),在表单表提交到服务器端后,可以直接通过Name属性取到表单域的值,却无法通过ID直接取到该表表单对象的值。
2、同一个Form里不能有多个name属性相同的html标记,但如果一个网页中有多个Form,则不同的Form里可以有同个Name属性的标记。而ID是全局的,在一个HTML文档里不能有多个节点使用相同的ID,无论它处在哪个Form里。
3、在建立CSS样式的时候,可以建立ID样式表(以#为前缀),使具有该ID的样式直接应用该样式,而无法建立Name样式表。
4、在进行网页编辑时建议使用ID来标识一个节点,而不是使用Name(除非是为了Post提交的需要),同样使用Javascript进行Dom节点定位时建议使用getElementById方法,因为只有ID能唯一标识一个节点,而同一个网页里可能会有多个Name属性相同的节点,它们分别处在不同的Form里。
参考技术A

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

    <a name="myname"> 
    <div id="myid"> 
    <label for="MyInput">My Input</label> <input id="MyInput" type="text"> 

    HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字、图形、动画、声音、表格、链接等。HTML的结构包括头部(Head)、主体(Body)两大部分,其中头部描述浏览器所需的信息,而主体则包含所要说明的具体内容。

    name原来是为了标识之用,但是现在根据规范,都建议用id来标识元素。但是name在以下用途是不能替代的:

    1. 表单(form)的控件名,提交的数据都用控件的name而不是id来控制。因为有许多name会同时对应多个控件,比如checkbox和radio,而id必须是全文档中唯一的。此外浏览器会根据name来设定发送到服务器的request。因此如果用id,服务器是无法得到数据的。

    2. frame和window的名字,用于在其他frame或window指定target。

    以下两者可以通用,但是强烈建议用id不要用name:

    锚点,通常以前写作


    现在可以用任何的元素id来指定:


    以下只能用id:

    1. label与form控件的关联,


    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,注意这样得到的是经过计算后将发送给服务器的值。

参考技术B html的name和id可以类比身份证的姓名和身份证编号
编号id具有唯一性,一个id只出现一次。
名称name具备可重复性,可以多次出现。
在css中两者都具备识别html元素的作用,name用点号.表示,id用井号#
一般name用于通用多次出现元素的样式定义,id用于唯一性元素样式定义。

在表单当中,由于有些控件具备多元素特性,例如radio checkbox等,使用id不便于表单数据的提交,此外浏览器会根据name来设定发送到服务器的request,因此在表单当中,用name来提交数据。

当然,在实际的html中,也完全可以不用id,用单独的class也可以起到代替id的作用。但是在js中,是无法通过class直接后去html元素的, 定义id便于相关操作。

更多详情可参考百度文库
http://wenku.baidu.com/view/a3fcdc976bec0975f465e2c4.html本回答被提问者和网友采纳
参考技术C 1、name指的是用户名称,ID指的是用户注册是系统自动分配给用户的一个序列号。 name是用来提交数据的,提供给表单用,可以重复;id则针对文档操作时候用,不能重复。如:document.getElementById();
2、ID是在客户端脚本里用!NAME是用于获取提交表单的某表单域信息,在form里面,如果不指定Name的话,就不会发送到服务器端。
参考技术D id 可以定义CSS样式,但最好只设置一个,因为脚本在查找DOM的时候只会返回第一个ID,如果要多个标签用同一样式,那就用class追问

那name呢

追答

name是提交表单时,后台处理的所提交数据的一个映射,比如的输入框中输入了123并提交,提交的表单中 test = 123, 懂不。

id和name属性

  id和name的联系:

  (1)都可以用来标识一个元素

  (2)在Javascript中,通过getElementById和getElementByName都定位DOM节点。

  区别:

  (1)id具有全局唯一性,在整个文档中不能有重复的id,主要在客户端脚本里使用。name属性可以标识多个元素,同一个Form里不能有多个name属性相同的HTML标记,但如果一个网页中有多个Form,则不同的Form里可以有同个Name属性的标记。

  (2)label与form之间的关联必须使用到id属性。name属性做不到。

 <label for="hrcInput">My Input</label>
            <input id="hrcInput" type="text">

  (3)在CSS样式表中,以#+id值为前缀可以建立id样式表,快速找到指定元素,为它设置样式。但name值没有办法作为选择器在CSS中使用。

  (4)使用Javascript进行Dom节点定位时建议使用getElementById方法,可以快速定位唯一的DOM节点,而使用getElementByName会选中多个form中具有相同name值的节点。

  (5)在多个单选input元素中

<input type="radio" name=" ">

  使用同一个name值可以实现单选功能,是name属性特有的功能。

  (6)网页做Post提交时,是以Form(即表单域)为单位进行提交的,一个Form里有若干个表单对象,同一个页面里可以为多个Form(Asp.net不同,它只允许有一个,且名字必须为Form1),在表单表提交到服务器端后,可以直接通过Name属性取到表单域的值,却无法通过ID直接取到该表表单对象的值。

  (7)IE支持在脚本中直接以id引用该id标识的对象。例如hrcInput.value,name属性不具有这个功能。

以上是关于html里name和id的区别的主要内容,如果未能解决你的问题,请参考以下文章

html中,id,name,class之间的有啥区别?

网页设计之HTML中Id和Name的区别

id 和 name 区别

html中的name和id有啥区别不同?一般情况下使用哪个?还是两个都用?

HTML 中的name属性和id属性有啥区别?

html中,id,name,class之间的有啥区别?