getAttribute和getAttributeNode

QWrap群有个同学问了个问题:为什么IE7中通过getAttribute获取input的placeholder,结果是null,正常情况下应该是有值的?实
际上这是某些版本IE的bug,在IE10中,F12后把文档模式调成IE7标准,这个bug能复现。这里刚好有个JK之前写的placeholder无依赖版,有I
E10的同学可以点开看下bug长什么样。

使用getAttributeNode得到属性节点,再通过nodeValue得到该属性节点的值,就能解决类似的bug。这个方法还可以用来解决我博客之前提到的f
orm表单中有元素在IE低版本中通过getAttribute获取不到form.name的bug:


<form name="form1">

        <input name="name" />
    </form>
    <script>
    var form = document.getElementsByTagName('form')[0];

    alert(form.getAttribute('name')); /*IE6、7中会得到错误的值*/
    alert(form.getAttributeNode('name').nodeValue);
    </script>

getAttributeNode的效率比getAttribute要低一些。如果要获取元素的id,node.id是最快的方法,node.getAttribut
e('id')其次,getAttributeNode('id').nodeValue最慢。

实际上,浏览器中与节点Attribute有关的坑有很多,好在主流JS框架都写了大量代码使得各浏览器下都能得到合理的结果。随着低版本IE的逐渐淘汰,这些坑都会
成为历史的。

最多阅读

getAttribute和getAttributeNode 11月以前  |  1541次阅读
一种很帅的JS代码书写方式 11月以前  |  1293次阅读
Web弹出类似Android的Toast的信息提示 11月以前  |  1292次阅读
Chrome 滚动条冻结现象 11月以前  |  1277次阅读
通过jQuery发送ajax请求 11月以前  |  1165次阅读
js为object动态添加属性 11月以前  |  1048次阅读
[小Tip]Webkit下设置hash的一个坑 11月以前  |  977次阅读
AMD 的 CommonJS wrapping 11月以前  |  943次阅读
用Opera Mobile调试手机版网页 11月以前  |  774次阅读
jQuery获取Select选择的Text和Value 10月以前  |  679次阅读
JavaScript跨平台(兼容各个平台)事件 10月以前  |  382次阅读
JavaScript中克隆对象 10月以前  |  348次阅读
用JavaScript添加style节点 10月以前  |  347次阅读
JavaScript字符与ASCII码间的转换 10月以前  |  343次阅读
合并两个Array并去掉重复项 10月以前  |  340次阅读
判断一个对象是否为数组 10月以前  |  330次阅读