前言
最近几天在学习servlet和jsp,在本地搭建了一个材料收集系统,开发过程中遇到
的一些问题想逐步填填坑,其中一个问题就是html控件中id,name和value的区分。
简单说,id具有唯一性,是身份证号;name是控件的名称,value是控件的值。
下面将分为两部分说一下我对这三种属性的理解:
1、 id、name、value的区别
2、 id为什么不能取代name
1、 id、name、value的区别
id
- 编号id具有唯一性,一个id只出现一次。
name
name是控件的名称(多个控件可以取同一个名称),value是控件的值;
并不是所有控件的value都会显示出来,比如 checkbox, radio, hidden;
定义控件的 name和value 就可以在服务器上获取这个控件和它的值;
控件不定义name/value也可以显示,只是为了方便在服务器接收和区别,才定义它的 name/value,当然按钮的 value 不光是存放它的值,也用来显示。
value
按钮中用的value 指的是按钮上要显示的文本。
复选框用的value 指的是这个复选框的值
单选框用的value 和复选框一样
下拉菜单用的value 是列表中每个子项的值
隐藏域用的value 是框里面显示的内容
也就是说,input控件中value的值就是
request.getParameter(name);
获得的值。
2、id为什么不能取代name
虽然id对于客户端来说是身份认证的标志,但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中