手机
当前位置:查字典教程网 >网页设计 >XHTML >HTML元素的ID和Name属性的区别
HTML元素的ID和Name属性的区别
摘要:今天對有點疑惑,加上#表示一個錨,後面跟上13,就會跳到本頁面的13的位置,而這個13就是Name屬性值。怎麼不是ID值呢???所以查了下I...

今天對 <a href="#13"></a> 有點疑惑, 加上#表示一個錨,後面跟上13,就會跳到本頁面的13的位置,而這個13就是 Name屬性值。怎麼不

是ID值呢???所以查了下ID 和Name的區別,特記錄

最classical的答案:ID就像是一个人的身份证号码,而Name就像是他的名字,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,meta和param。例如为Object定义参数<PARAM NAME = "appletParameter" VALUE = "value">或Meta中< META NAME = "Author" CONTENT = "Dave Raggett">。

显然这些用途都不是能简单的使用ID来代替掉的,所以HTML元素的ID和Name的却别并不是身份证号码和姓名这样的区别,它们更本就是不同作

用的东西。

我们可以通过一段代码来分析一下其中的微妙差别:

<form method="post" action="" name="demoform">

<input type="text" name="oDemo" id=”oDemo2” value="DEMO" />

</form>

在IE浏览器里,我们可以通过多少方法来索引到这个文本框对象?(为区别起见,我们把NAME和ID设成了不同的值)

1. oDemo

2. demoform.oDemo

3. document.all.oDemo

4. document.all.demoform.oDemo

5. document.forms[0].oDemo

6. document.forms['demoform'].oDemo

7. document.forms['demoform'].childNodes[0]

8. document.forms['demoform'].elements[0]

9. document.getElementById('oDemo2')

以上9种索引方法在IE6里面全部通过返回值测试,不过值得注意的是最后一种:在IE6里,我把索引对象写成document.getElementById('oDemo'),浏览器也能正确索引到对象,真是可怕的容错性啊!!

接着问题来了,我们把这段代码放在Mozilla Firefox 1.0里再执行一次,只有第7种方法返回“undefined”,其他的方法可以正确索引到对象,不过由于第3、4种方法用到了document.all这个IE专有对象,FF1.0虽然返回了正确的值,不过却在控制台里发出了警告:警告:非标准的属性 document.all。请使用 W3C 的标准形式 document.getElementById()

接下来我们把HTML文本类型定义得严格一点,在源代码开头加上:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">使HTML文本按照HTML4.01标准去解析,在IE6里照样全部通过返回值测试,不过在Mozilla Firefox 1.0里麻烦就大了,第3、4种方法没有任何的返回值,而在控制台里发出了报错信息:错误: document.all has no properties ,而第7种方法依旧返回“undefined”。

小 结

NAME主要应用在交互式网页,表单提交给某个服务器端脚本后接收变处理量使用。从源代码的规范性和兼容性角度出发,如在客户端脚本里要索引某个对象,建议用

document.getElementById()

另外举个简单的例子:

<form name="form1">

用户名:<input type=text name="username" id="username">

密码:<input type=password name="password" id="pwd">

</form>

如果我要获得用户名和密码;JS用name获得的话,就得写成document.form1.username.value;

document.form1.password.value;

用id获得:

docuement.getElementById("username");

docuement.getElementById("pwd");

有时候name 可能会出现相同的名字,所以这时候我们用name获得就无法确定获得的是哪个值了。

document.getElemntsByName("username");

这里得到的是一个数组

【HTML元素的ID和Name属性的区别】相关文章:

HTML表格标记教程(33):单元格的垂直对齐属性VALIGN

HTML表格标记教程(20):行的背景色属性BGCOLOR

HTML表格标记教程(29):单元格的亮边框色属性BORDERCOLORLIGHT

XHTML教程:Transitional和Strict的区别

HTML4.0元素默认样式整理

你问我答:XML与HTML的区别

HTML title 属性换行的办法

input标签里面的name与value的区别

如何给span标记的样式设置width属性

shtml与html的区别说明

精品推荐
分类导航