input中id和name特性的差别示例详细介绍

做网站很久了,但到如今都还没搞搞清楚input中name和id的差别,近期学习培训jquery,又遇到这个难题,就在网络上收集材料。看到这篇,就梳理出来,以备后用。

能够说基本上每一个做过Web开发设计的人都问过,究竟元素的ID和Name有甚么差别阿?为何有了ID还要有Name呢?! 而一样大家还可以获得最classical的回答:ID就好像1本人的身份证号码,而Name就好像他的姓名,ID明显是唯1的,而Name是能够反复的。

上星期我也遇到了ID和Name的难题,在网页页面里键入了1个input type="hidden",只写了1个ID='SliceInfo',取值后submit,在后台管理用Request.Params["SliceInfo"]却如何也去不到值。后来如梦初醒因该用Name来标识,因而在input里加了个Name='SliceInfo',就1切ok了。

第1段里针对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控制在同1个排序类,check实际操作是mutex的,同1時间只能选定1个radio,这个排序便是依据同样的Name特性来完成的。
主要用途3: 创建网页页面中的锚点,大家了解<a href="URL">link</a>是得到1个网页页面非常连接,假如无需href特性,而改用Name,如:<a name="PageBottom"></a>,大家就得到了1个网页页面锚点。
主要用途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的却别其实不是身份证号码和名字这样的差别,它们更本便是不一样功效的物品。

自然HTML元素的Name特性在网页页面中还可以起那末1点ID的功效,由于在DHTML目标树中,大家可使用document.getElementsByName来获得1个包括网页页面中全部特定Name元素的目标数字能量数组。Name特性也有1个难题,当大家动态性建立可包括Name特性的元素时,不可以简易的应用取值element.name = "..."来加上其Name,而务必在建立Element时,应用document.createElement('<element name = "myName"></element>')为元素加上Name特性。这是甚么意思啊?看下面的事例就搞清楚了。

拷贝编码
编码以下:

<script language="JavaScript">
var input = document.createElement('INPUT');
input.id = 'myId';
input.name = 'myName';
alert(input.outerHTML);
< /script>

信息框里显示信息的結果是:<INPUT id=myId>。

拷贝编码
编码以下:

< script language="JavaScript">
var input = document.createElement('<INPUT name="myName">');
input.id = 'myId';
alert(input.outerHTML);
< /script>

信息框里显示信息的結果是:<INPUT id=myId name=myName>。
原始化Name特性的这个设计方案并不是IE的缺点,由于MSDN里说了要这么做的,但是这样设计方案的基本原理甚么呢?我临时沒有想太搞清楚。

这里再顺带说1下,如果网页页面中有n(n>1)个HTML元素的ID都同样了如何办?在DHTML目标中如何引入她们呢?假如大家应用ASPX网页页面,这样的状况是不可易产生的,由于aspnet过程在解决aspx网页页面时压根就不容许有ID非唯1,这是网页页面会被抛出出现异常而不可以被一切正常的render。如果并不是动态性网页页面,大家硬要让ID反复那IE如何搞呢?这个情况下大家還是能够再次应用document.getElementById获得目标,只但是大家只能获得ID反复的那些目标中在HTML Render时第1个出現的目标。而这时候反复的ID会在引入时全自动变为1个数字能量数组,ID反复的元素按Render的次序先后存在于数字能量数组中。

表模块素(form input textarea select)与架构元素(iframe frame)用 name
这些元素都与表单(架构元素功效于form的target)递交相关, 在表单的接受网页页面只
接受有name的元素, 赋ID的元素根据表单是接受不到值的, 你自身能够认证1下.
有1个列外: A 能够赋 name 做为锚点, 还可以赋ID

自然上述元素还可以赋ID值, 赋ID值的情况下引入这些元素的方式就要变1下了.
赋 name: document.formName.inputName document.frames("frameName")
赋 ID : document.getElementById("inputID") document.all.frameID

只能赋ID不可以赋name的元素:(去除与表单有关的元素都只能赋ID)
body li table tr td th p div span pre dl dt dd font b 这些