上周我也遇到了id和name的问题,在页面里输入了一个input type=hidden,只写了一个id='sliceinfo',赋值后submit,在后台用request.params[sliceinfo]却怎么也去不到值。后来恍然大悟因该用name来标示,于是在input里加了个name='sliceinfo',就一切ok了。
第一段里对于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: 建立页面中的锚点,我们知道5117bd04c80c1a5071ee8c495114adf7link5db79b134e9f6b82c0b36e0489ee08ed是获得一个页面超级链接,如果不用href属性,而改用name,如:4b8f33292fa2d2e2f180851dc29611715db79b134e9f6b82c0b36e0489ee08ed,我们就获得了一个页面锚点。
用途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 input textarea select)与框架元素(iframe frame)用 name
这些元素都与表单(框架元素作用于form的target)提交有关, 在表单的接收页面只接收有name的元素, 赋id的元素通过表单是接收不到值的, 你自己可以验证一下.
有一个例外: a 可以赋 name 作为锚点, 也可以赋id。
2.id要符合标识的要求,比如大小写敏感,最好不要包含下划线(因为不兼容css)。而name基本上没有什么要求,甚至可以用数字。id就像是一个人的身份证号码,而name就像是他的名字,id显然是唯一的,而name是可以重复的。
d5fd7aea971a85678ba271703566ebfd 标签规定用户可输入数据的输入字段。
根据不同的 type 属性,输入字段有多种形态。输入字段可以是文本字段、复选框、密码字段、单选按钮、按钮等等。
id:作为标签的唯一标识。
name:作为可与服务器交互数据的html元素的服务器端的标示。
3.id 是 以 #定义的css样式
也可以用js获取来控制 getelementbyid(这里是id) 来获取
name 很多了,就是给当前标签或元素指定名称,也可以用js来控制值,form提交后获取的时候就需要获取name名称。
4.id 一般用于css和js中引用,name用于表单提交,只有加了name属性的标签元素才会提交到服务器。
以上就是详解表单元素input框中的name和id的区别的详细内容。
