在学习HTML标签中的<input> 元素的输入类型时,我发现<input>标签除了拥有,type等控制输入字段的属性以外,还有两个不能被直接看出来的属性:“id”和“name”。那么这两个属性有什么不同呢?
1.定义上:
name:name 属性规定 input 元素的名称。
id:id 属性规定 HTML 元素的唯一的 id。
或许这两句话很难被区分开来,我们可以通过生活上的列子来形象地类比这个问题。我们每个人都有自己的名字和身份证号。在生活上难免会遇见和自己重名的人。但每个人的身份证号却是唯一的,这就是通过,姓名(name),与身份证idcard)来区分两者的不同。
2.用法:
在清楚了name与id的定义后,我们不难看出二者的作用肯定也是不同的,id的特殊属性决定了,每一个id元素在同一个HTML文档中必须是唯一的。而name元素却不需要这样。
name:
name的用法拿我进行表单练习的时候遇到过的一个问题做例子吧。如下图:
如图“”例子1"所示,很简单的在<form>这样的块级元素中我定义了4个单选输入。他们的name元素是一样的,因为type元素是“radio”所以就出现了,当我选择一个选项的时候另一个选项会消失。如下图所示
我选择了B选项,接下来进行C选项
B选项消失了。
然而当我对代码进行修改将<form>内部的4个<input>的name属性不同命名时
发现可以进行多项选择了。由此我们可以发现在同一个块级元素<form>内的不同的<input>中,每一个name元素都相当于对这个<form>元素所进行的赋值当不同的<input>出现相同的name时,相当于将他们绑成一个整体,这样系统才会识别他们的是作用在同一个cradio分组内。
除此以外,还有在服务器端根据name的通过Request.Params取得元素提交的值。只有设置了 name 属性的表单元素才能在提交表单时传递它们的值。如代码:
在没有name属性的情况下是没有接受到输入的。
id:
id 属性可用作链接锚(link anchor),通过 JavaScript(HTML DOM)或通过 CSS 为带有指定 id 的元素改变或添加样式。
按下change text后出现了
由此可以发现在我们用javascript写了一个funcation之后,< h1>的id被change_header()函数获取了,之后就会出现如图所示的实现。
3.id与name的选择:
只能用id的情况:
1.label与form控件的关联, <label for="MyInput" >My Input</label> <input id="MyInput" type="text"> for属性指定与label关联的元素的id,不可用name替代。
- CSS的元素选择机制,以#MyId的方式指定应用样式的元素,不能用name替代。
当我们需要使得用户点击文本就可以完成出发相关控件的时候,使用<label>标签,并且使得标签内部的for元素与控制点击的<input>标签的id元素相同。
通过以上例子,就可以对id属性以及name属性有了比较清楚的区分了。
详细内容需参考百度文档以及大咖博客。