id与name的作用,作为标签的标识符,基本上是一样的.name是老方法,id是在name基础上发明的,后来才有的,"现代化"一点,用的范围广一点. <A..> 中的name原来(刚发明时)就是用于本页揿一下转向过去用的.
除 BASE, HEAD, HTML,META, SCRIPT, STYLE, TITLE 标签外,id 都可用.
name只用于APPLET,SELECT,FORM,FRAME,IFRAME,IMG,A,INPUT,OBJECT,MAP,PARAM,META.(name有时有自己的用途)
table 中 name 无定义, 应当用 id.
有些标签,可以同时有name和id.
在一个HTML网页中,id是唯一的,即只有某一个标签,或某一个块的标识符是这个id.
id 在HTML中的作用:
(1) 用id选择相应的style sheet(风格).
(2) <A ..> 链接的目的地
(3) 脚本语言用它找目的地(找该id的标签)
(4) 作为名字,用于声明某OBJECT element
(5) 作为一个标签或块的区分标致(用于从HTML网页中取出数据放入数据库或把HTML翻译成别的格式,等情况).
这几天碰到一个不大不小的问题:在提交表单到服务器页面时,总是提交不过去,最后解决了,问题出在了我把HTML控件中ID属性与NAME属性给弄混了.仔细看了一下,HTML控件中有ID和NAME这两个属性,而WEB控件中则只有ID属性.从网上找了以下解释:
可以说几乎每个做过Web开发的人都问过,到底元素的ID和Name有什么区别阿?为什么有了ID还要有Name呢?! 而同样我们也可以得到最classical的答案:ID就像是一个人的身份证号码,而Name就像是他的名字,ID显然是唯一的,而Name是可以重复的。
ID就是Client端HTML元素的Identity。而Name其实要复杂的多,因为Name有很多种的用途,所以它并不能完全由ID来代替,从而将其取消掉。具体用途有:
用途1: 作为可与服务器交互数据的HTML元素的服务器端的标示,比如input、select、textarea、和button等。我们可以在服务器端根据其Name通过Request.Params取得元素提交的值。
用途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">。
显然这些用途都不是能简单的使用ID来代替掉的,所以HTML元素的ID和Name的却别并不是身份证号码和姓名这样的区别,它们更本就是不同作用的东西。
当然HTML元素的Name属性在页面中也可以起那么一点ID的作用,因为在DHTML对象树中,我们可以使用document.getElementsByName来获取一个包含页面中所有指定Name元素的对象数组。
在这里顺便说一下,要是页面中有n(n>1)个HTML元素的ID都相同了怎么办?在DHTML对象中怎么引用他们呢?如果我们使用ASPX页面,这样的情况是不容易发生的,因为aspnet进程在处理aspx页面时根本就不允许有ID非唯一,这是页面会被抛出异常而不能被正常的render。要是不是动态页面,我们硬要让ID重复那IE怎么搞呢?这个时候我们还是可以继续使用document.getElementById获取对象,只不过我们只能获取ID重复的那些对象中在HTML Render时第一个出现的对象。而这时重复的ID会在引用时自动变成一个数组,ID重复的元素按Render的顺序依次存在于数组中。
要区别: id是唯一标识此标签的 name可以理解为数组 class是css样式中的一种选择方式 在JavaScript中,可以通过document.getElementById("xx")获得标签对象。 这时用到的是id属性,此对象只能是唯一的 document.getElementsByName("xx")顾名思义,通过标签的name属性获得一组标签,这样在JavaScript中获得的就是一组对象,即对象数组 在css中,可以通过.xx获得此标签对象,为此标签设置样式 #是在css中的一种选择器,是通过标签的id属性获得此标签,为标签设置样式,与class的.基本意义相同,但是#是唯一的标识 ?是带参url的语法,例如xxx.html?id=5就表示跳转时,携带一个参数,参数名为id,值为5 !我只知道,注释html时可以用到<!-- 要注释的内容 -->