为表单元素设置name属性的一个’陷阱’
Time: 09-11-29 Comments: 0
一. 背景
通常, 我们在使用表单时, 会给表单元素设置一个name属性, 这是再正常不过的操作, 但是, 现在我建议你, 最好不要将某个表单元素的name属性值设置为tags.
二. 为什么?
因为IE6+, Opera, Webkit中, 对于表单元素的elements对象, 有个名为tags的原生方法, 其作用是通过表单元素的标签名来获取表单元素, 如var o =oForm.elements.tags(‘input’)[0].
虽然几大浏览器都支持tags方法, 但对于一个特殊情况, 出现了两种结果: 当某个表单元素的name属性值为tags, oForm.elements.tags是表示的什么呢?
三. 两个例子
例1: 表单中不存在name属性值为tags的表单元素
<form name="testForm1" action="" method="post">
<input type="text" />
</form>
<script type="text/javascript">
var oForm = document.getElementById('testForm');
alert(oForm.elements['tags']);
</script>
FF: 输出undefined;
IE, Opera, Webkit: function tags() {native code}
例2: 表单中存在name属性值为tags的表单元素
<form name="testForm1" action="" method="post">
<input type="text" name="tags" />
</form>
<script type="text/javascript">
var oForm = document.getElementById('testForm');
alert(oForm.elements['tags']);
</script>
IE, FF, Opera: 输出元素引用
Webkit: function tags() {native code}
三. 解决方法
- 1. 避免将name属性值设置为tags;
- 2. 不使用oForm.elements方式来获取表单元素;
- 3. 使用oForm.elements.namedItem(‘tags’)方式来获取(推荐), 该方式各浏览器均支持, 且不会出oForm.elements['tags']这样的问题.
Leave a comment!
浅析数组分时处理 >>
