2011-04-20 67 views
0

我有一个代码,以延长htmloptionscollection对象:延长htmloptionscollection

HTMLOptionsCollection.prototype.contains = HTMLOptionsCollection.prototype.contains || 
    function(otherOption) { 
     for (var i = 0; i < this.length; i++) { 
      if (this[i].value === otherOption.value) { 
       return true; 
      } 
     } 
     return false; 
    }; 

它运作良好,对firefoxa DN在Opera,但在IE9和谷歌浏览器不工作显示: “未捕获的ReferenceError:HTMLOptionsCollection是未定义“

我该如何解决这个问题。我做错了什么?如果我是,我该如何解决它?

回答

0

如果你做错了什么,那么错误的是你认为任何浏览器都支持整个DOM。例如IE:我没有看到任何HTMLOptionsCollection的原型MSDN

+0

我假定DOM规范http://www.w3.org/TR/DOM-Level-2-HTML/html.html#HTMLOptionsCollection是纠正这是我用每种语言做的事情。如果我不能假定一种语言遵循其规范,那么我将花更多的时间用该语言进行编程!那么,这个问题的解决方法是什么?我想扩展document.createElement('select')。选项返回的对象。 – brunoais 2011-04-21 06:52:50

+0

这不是DOM规范的问题,问题是没有遵循的应用程序。应该可以扩展HTMLSelectElement - 原型,但是在你做任何这样的事情之前,请阅读为什么你不应该去看它:http://stackoverflow.com/questions/3826599/general-reasons-not-to-deal-with -documents-和元素原型 – 2011-04-21 23:22:11