在IE下用getAttribute时要小心

作者:Rank 来源:never-online weblog 时间:2008-08-21 12:54:00 

在做DHTML时,我们在某些情况下要用setAttribute(attri, value)方法定义元素的attribute。同时与getAttribute(attri)配对来得到相应的自定义attribute的值。

但在IE下要小心。getAttrubite方法,其官方文档里描述它的返回值是这样说的:

Return Value
Variant. Returns a string, number, or Boolean, defined by sAttrName. If an explicit attribute doesn't exist, an empty string is returned. If a custom attribute doesn't exist, null is returned.
返回值
变体。返回一个定义attribute时的字符串,数字,或者布尔值,如果这个已有属性不存在,则是一个空字符串,如果一个自定义的attribute不存在,则返回null。

下面来做个自定义实验

上面的示例可以看到的确如文档中描述的那样,返回值没有异议。

在select控件中,我们可以用selectObject.value来得到或者设置某个控件的值。比如:

<select id="ctlSelect">
  <option value="">- please select -</option>
  <option value="1">opt1</option>
  <option value="2" selected>opt2</option>
  <option value="3">opt3</option>
  <option value="4">opt4</option>
  </select>
  <button onclick="document.getElementById('ctlSelect').value=''">set value</button>

但是将上面两个例子(getAttribute与select)结合起来用的话,效果就与我们想象中的不一样了。
下面的例子是一个select联动的效果,也就是选择第一个select,对应的value会赋值得第二个select上。
(下例中select控件第一个选项是空字符串) 当选中第一个选项时,你会发现第二个select中竟没有任何一个选项被选中。与上例我们所写的示例代码相矛盾。


这个bug的解决方法很简单,只需要我们手工强制转型。但这不得不让我怀疑IE里selectObject.value处理机制。


bug虽小,但却是个不大不小的陷阱,一旦你不小心掉了进去,在大量的代码中寻找这个bug着实会让你头痛。

标签:getAttribute,ie,javascript
0
投稿

猜你喜欢

  • Magic Photo Frame 神奇创意相框

    2009-09-15 20:45:00
  • 网页布局设计基础

    2008-10-16 13:58:00
  • SQL Server 2008数据挖掘查询任务

    2009-03-16 16:50:00
  • asp访google分页代码

    2009-07-10 13:06:00
  • 不通过数据源名DSN也能访问Access数据库吗?

    2009-10-29 12:22:00
  • File input 的样式和文字的更改方法__适用于Firefox、IE等浏览器

    2009-10-13 21:05:00
  • asp如何用FSO对象显示一个文本文件?

    2010-06-09 18:41:00
  • 栅格:一以贯之

    2008-07-22 12:19:00
  • 深入透析样式表滤镜(上)

    2011-06-14 09:48:40
  • asp是的日期转换为星座的函数

    2011-02-26 11:11:00
  • FF和IE之间7个JavaScript的差异[译]

    2009-05-04 18:19:00
  • FSO遍历文件夹目录及目录下文件asp代码

    2008-10-10 12:54:00
  • 简要介绍SQL Server 2008新的事件处理系统

    2009-12-22 08:15:00
  • 客户端和服务端的编码“陷阱”

    2007-12-21 19:19:00
  • 学习ASP.NET八天入门:第七天

    2007-08-07 13:52:00
  • 深入浅出SQL嵌套SELECT语句

    2009-02-06 14:25:00
  • xhtml+css VS div+css

    2008-04-07 13:00:00
  • SQL Server转换为XQuery及反向转换

    2009-01-20 13:32:00
  • System.Data.OleDb.OleDbDataAdapter与System.Data.OleDb.OleDbDataReader的区别是什么?

    2009-10-29 12:17:00
  • 服务器端控件是如何操作的?

    2009-11-01 15:22:00
  • asp之家 网络编程 m.aspxhome.com