用 JavaScript 为元素加上 name 属性

Nov 17th, 2009 Add Comment

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

今天遇到个小问题, 在构建 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 属性的元素. 为求各浏览器兼容良好, 代码可以这样写:

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. http://1.gravatar.com/avatar/3069ba475e8527f2613d88689e264821?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    大家都是强悍的人!

  2. http://0.gravatar.com/avatar/e2e3a42cd7ee20d454082fbe128d7548?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    不错啊

  3. http://0.gravatar.com/avatar/c174c808eb63160d03819ad1d2dadaf7?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G
  4. http://0.gravatar.com/avatar/28ea04650153a2dc99acd9b8d1b6fc4e?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

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

  5. http://0.gravatar.com/avatar/ee7f497cbe066617ac3939ce0f37d7a2?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G
  6. http://1.gravatar.com/avatar/99d46561fa5ec7a1ac70714d2ecb84da?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    用的这的猪蹄;来围观

  7. http://0.gravatar.com/avatar/81d49c68f3288b8e5f62ca32310283a7?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

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

  8. http://1.gravatar.com/avatar/fa7f6e086d0164f7a5c41a79df6bd3ee?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    来这里学习来了。

  9. http://1.gravatar.com/avatar/9d9477ecc62b02e1462344209df591c6?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    最近更新的挺勤快

  10. http://0.gravatar.com/avatar/6ae83ef4bfaa6f98356a5187b6f171f6?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

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

  11. http://1.gravatar.com/avatar/71981550e606563e4f569c420b2276cf?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

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

  12. http://0.gravatar.com/avatar/490cf262668eebb0f0f1a50d9d48d702?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

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

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

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

  13. http://0.gravatar.com/avatar/2a9c4f525050372a6fe0b10ce4fe8957?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

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

  14. http://0.gravatar.com/avatar/e35bd80009c6bd26f4647bf5857eb713?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

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

  15. http://0.gravatar.com/avatar/a7f9b1d4ef8695567b1565dc5a8086e5?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G
  16. http://1.gravatar.com/avatar/94edba5ccaf4f54d0891cf3a7b1e1280?s=32&d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

    专业的文章
    俺也来看看~

  17. http://0.gravatar.com/avatar/26aebbb5d652c8aef96d732c0d702d1b?s=32&d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D32&r=G

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