ID就像是一个人的身&份&证号码,而Name就像是他的名字,ID显然是唯一的,而Name是可以重复的。
今天對 <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");
这里得到的是一个数组
最新资讯
“5G焦虑”绑架了谁

“5G焦虑”绑架了谁

每年秋季,都是手机领域最热闹的时候。但在今年,这个趋势
阿里CEO张勇:数字经济时代线上线下是同一个世界

阿里CEO张勇:数字经济

在9月16日阿里妈妈M营销峰会闭门会议中,阿里巴巴董事局
腾讯与故宫博物院达成战略合作 聚焦"数字故宫"建设

腾讯与故宫博物院达成

故宫博物院与腾讯共同签署深化战略合作协议,未来三年双
欧盟:若无法达成全球统一的数字税 欧盟将单独征税

欧盟:若无法达成全球统

意大利前总理、欧盟候任经济事务专员保罗·真蒂洛尼今
淘宝会员名可以改了?客服:功能陆续开放中

淘宝会员名可以改了?客

根据虎嗅App的报道,有网友发帖称实测可以改淘宝会员名
台媒:联发科目标明年5G芯片出货6000万颗

台媒:联发科目标明年5G

供应链日前传出消息,联发科规划明年5G芯片出货瞄准6000
最新文章
使用html-webpack-plugin'入再内存中生成 html 页面插件

使用html-webpack-plu

这篇文章主要介绍了使用html-webpack-plugin'入再内
HTML实现2列布局(左侧宽度固定,右侧自适应)的方法示例

HTML实现2列布局(左侧

这篇文章主要介绍了HTML实现2列布局(左侧宽度固定,右侧
Html读取本地文件夹下图片并显示的示例代码

Html读取本地文件夹下

这篇文章主要介绍了Html读取本地文件夹下图片并显示的
详解 html area标签

详解 html area标签

area 元素总是嵌套在 <map> 标签中。本文重点给大家介
HTML中两个tabs导航冲突问题的解决方法

HTML中两个tabs导航冲

这篇文章主要介绍了HTML中两个tabs导航冲突问题的解决
详解前端在html页面之间传递参数的方法

详解前端在html页面之

这篇文章主要介绍了详解前端在html页面之间传递参数的