<ul id="tt">
  <li>111 </li>
  <li>111 </li>
  <li>111 </li>
  <li>111 </li>
</ul>
<script>
Object.prototype.Each = function(fun) {
    if(this.length && this.length > 0){
        for (var i = 0; i < this.length; i++)
            fun(this[i], i);
    }
}var objs = document.getElementById("tt").getElementsByTagName("li");objs.Each(function(obj, index){
alert(index);
})
</script>ff能运行ie不能运行
为什么呢

解决方案 »

  1.   

    IE下Object原型的扩展是不会影响到DOM对象的
    并且不推荐扩展Object
    如果需要,可以写成函数等。
    或者代理对象之类的方法....
      

  2.   

    getElementsByTagName返回的是一个ItemList集合类,并不是Object或者Array类.所以无论是Obj还是Arr基类中添加这个方法,getElementsByTagName返回类都无法继承到.但是js实际上并不存在这个集合类的显示表达,也就是说,你无法定义一个ItemList,只能靠getElementsByTagName/getElementsByName等来获得查一下犀牛,第4版就就有讲.
      

  3.   

    查了一下,应该是NodeList.手边只有第四版,上面讲可以作为只读数组处理.尝试一下Array类.
    以前我做过类似程序,最终放弃了.
    如果这种"污染基类"的方式不是特别必要的话,建议还是不要使用.