用 JavaScript 为元素加上 name 属性

干前端这行当已经超过一个月了, 每天都会遇到新奇古怪, 甚至离奇的问题. 虽然绝大部分都是一些小问题, 但我觉得还是有必要记录下来.

今天遇到个小问题, 在构建 DOM 时, IE 中不能通过 element.setAttribute('name', _variable);element.name = _variable; 这样的形式来为元素加上 name 属性, 无论是 IE6 还是 IE7. (IE8 是可以的, 但 IE8rc1 不行)

后来我查看了 MSDN, 得到信息如下:

Internet Explorer 8 and later can set the NAME attribute at run time on elements dynamically created with the createElement method. To create an element with a NAME attribute in earlier versions of Internet Explorer, include the attribute and its value when using the createElement method.

也就是说, 我们必须通过带属性和值的标签来创建有 name 属性的元素. 为求各浏览器兼容良好, 代码可以这样写:

1
2
3
4
5
6
7
8
9
10
11
12
var element = null;
try {
	// IE6/IE7 构建方式
	element = document.createElement('<input name="radio-button">');
} catch (e) {
	// W3C 构建方式
	element = document.createElement('input');
	element.name = 'radio-button';
}
// 定义其他属性
element.id = 'radio-1'
element.type = 'radio';

以前我是一个 Java 开发人员, 实际工作中 JavaScript 的代码量其实不多, 在自己的一些小应用中往往只是小打小闹, 会 (潜意识地) 避开一些可能出问题的地方, 像跨域使用 AJAX, IE 内存泄漏这样的问题很少回去考虑. 但在转做 UED 后, JavaScript 和交互应用肯定会成为我以后的工作重点, 发生大小各异问题的机会相当多 (现在几乎每天都有), 在解决各种问题的过程中, 我痛并快乐着. 本着不瞎搞, 少折腾的原则, 有必要把这些记录一下, 为自己备份, 更能与人分享.

声明: 本文采用 BY-NC-SA 协议进行授权. 转载请注明转自: 用 JavaScript 为元素加上 name 属性
  1. vapour | #1
    2009-11-17 08:23

    我测试通过以下代码
    var input=document.createElement("input");
    input.type="text";
    input.name="admin";
    input.setAttribute("name","admin");
    在IE6/IE7中都可以创建input

  2. 园子 | #2
    2009-11-17 09:07

    专业的文章
    俺也来看看~

  3. tuifei.net | #3
    2009-11-17 10:37

    做个记号!!

  4. Heidi | #4
    2009-11-17 12:11

    米格蜀黍最近更新很勤快啊~ 虽然我都看不懂
    btw,部落格打开速度果然变快了,还是我心理作用?

  5. bolo | #5
    2009-11-17 12:16

    阿里不是使用YUI库进行开发的吗?

  6. mg12 | #6
    2009-11-17 12:36

    @vapour
    请问你有使用 Chrome Frame 吗?

    @Heidi
    其实... 你心理作用, 看来你最近心情不错.

    @bolo
    打个比喻...
    平时我们吃饭, 虽然一般都叫外卖或者去食堂, 但为什么就不可以自己煮来吃呢.

  7. chisdy | #7
    2009-11-17 12:50

    看不懂,但知道这肯定是个积累点

  8. Zenoven自由人 | #8
    2009-11-17 13:16

    JS不是很懂。。。还得好好学学

  9. 吓我一跳 | #9
    2009-11-17 13:23

    最近更新的挺勤快

  10. crossyou | #10
    2009-11-17 19:52

    来这里学习来了。

  11. 小棒打鼓 | #11
    2009-11-17 20:43

    阿里巴巴就是有了你才精彩,没了你,阿里巴巴就和阿里奶奶一样

  12. don | #12
    2009-11-17 22:09

    用的这的猪蹄;来围观

  13. trylife | #13
    2009-11-17 23:54

    围观

  14. yinheli | #14
    2009-11-18 17:32

    我也测试了. 不知怎么可以呢? 我给你发Email了, 有空帮忙看看? :razz:

  15. notebeta | #15
    2009-11-19 13:20

    来看一下了

  16. ipaper | #16
    2009-11-22 09:28

    不错啊

  17. Eureka | #17
    2009-11-25 19:07

    大家都是强悍的人!

  1. No trackbacks yet.

Twitter Email feed
RSS feed