IE中不支持getElements属性或方法

时间:2011-09-02 09:59:35

标签: javascript internet-explorer mootools

仅在IE中查看页面时出现JavaScript问题。我明白了:

  

对象不支持此属性或方法

我的JavaScript代码中生成此错误的行是:

var panels = $('collapser').getElements('div.menuTable');

上面的代码试图在menuTable元素中使用类collapser获取所有div元素。

似乎IE不喜欢getElements方法!

这里是HTML中页面的相关部分:

<div id="collapser" class="text2"> 
    <h2 class="menu">system features1</h2> 
    <div id="div145fgjd584rgd" class="menuTable">
     ...
    </div>
    <h2 class="menu">system features2</h2> 
    <div id="div2sf54685454rtyt" class="menuTable">
     ...
    </div>
</div>

2 个答案:

答案 0 :(得分:2)

在IE 6,7和8(部分)中,Element.prototype是verbotten或元素只是不受益于对其原型的更改。

作为一种解决方法,当MooTools通过选择器($,$$)或正在创建它时(元素构造函数)访问时,MooTools会将所有Element.prototype方法的副本添加到每个IE元素对象。

基本上:$("collapser")document.id("collapser")new Element('div#collapser')也会复制方法和设置元素存储等 - 这是一次性操作。

这让我相信你拥有的$()功能不是mootools功能。

例如:

this.$ = document.getElementById;
$("collapser").getElements("div"); // exception in IE6/7/8

是什么版本的mootools? console.log($); //是mootools吗?

你也可以这样做:

var panels = document.getElements('#collapser div.menuTable');

答案 1 :(得分:0)

我修复了我的代码:

var ie8 = jQuery.browser.msie&amp;&amp; jQuery.browser.version ==“8.0”; var panels =(ie8?$('collapser')。document:$('collapser'))。getElements('div.menuTable');

干杯!