今天對 有點疑惑, 加上#表示一個錨,後面跟上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: 建立页面中的锚点,我们知道link是获得一个页面超级链接,如果不用href属性,而改用Name,如:,我们就获得了一个页面锚点。 用途4: 作为对象的Identity,如Applet、Object、Embed等元素。比如在Applet对象实例中,我们将使用其Name来引用该对象。 用途5: 在IMG元素和MAP元素之间关联的时候,如果要定义IMG的热点区域,需要使用其属性usemap,使usemap="#name"(被关联的MAP 元素的Name)。 用途6: 某些特定元素的属性,如attribute,meta和param。例如为Object定义参数或Meta中。 显然这些用途都不是能简单的使用ID来代替掉的,所以HTML元素的ID和Name的却别并不是身份证号码和姓名这样的区别,它们更本就是不同作 用的东西。 我们可以通过一段代码来分析一下其中的微妙差别: 复制代码代码如下: 在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文本类型定义得严格一点,在源代码开头加上:使HTML文本按照HTML4.01标准去解析,在IE6里照样全部通过返回值测试,不过在Mozilla Firefox 1.0里麻烦就大了,第3、4种方法没有任何的返回值,而在控制台里发出了报错信息:错误: document.all has no properties ,而第7种方法依旧返回“undefined”。 小 结 NAME主要应用在交互式网页,表单提交给某个服务器端脚本后接收变处理量使用。从源代码的规范性和兼容性角度出发,如在客户端脚本里要索引某个对象,建议用 document.getElementById() 另外举个简单的例子: 用户名: 密码: 如果我要获得用户名和密码;JS用name获得的话,就得写成document.form1.username.value; document.form1.password.value; 用id获得: docuement.getElementById("username"); docuement.getElementById("pwd"); 有时候name 可能会出现相同的名字,所以这时候我们用name获得就无法确定获得的是哪个值了。 document.getElemntsByName("username"); 这里得到的是一个数组 09-16 18:30