2011-09-02 92 views
0

僅當在IE中查看頁面時,我遇到JavaScript問題。我得到這個:getElements在IE中不受支持的屬性或方法

對象不支持此屬性或方法

產生這個錯誤在我的JavaScript代碼行是:

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

上面的代碼試圖獲得collapser元素中menuTable級別的所有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> 
+0

沒有其他瀏覽器支持此JAVA腳本??? –

+0

通常,你的代碼沒有問題。我敢肯定,如果你在JsFiddle中運行這個代碼片段並在IE瀏覽器中查看它,它會工作得很好。也就是說,你的問題可能是由你嵌入的其他代碼造成的。當然,你可以通過console.log(document.id('collapser'))'來檢查元素是否被正確提取。 –

回答

2

在IE 6,7和8(部分),該Element.prototype被verbotten或元素只是不從變化中受益他們的原型。

作爲一種解決方法,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'); 
+0

關於最後一個的一個小評論。你可以把它寫成'panels = $$('#collapser div.menuTable');'。不過,我同意他的$ function有問題。如果這個問題只是IE瀏覽器,我會說它被重寫了,否則他可能會添加另一個使用$的框架,比如說jQuery? – Alxandr

+0

'$$'過去實際上是'document.getElements'的別名,現在它們都依賴'Slick.search'。 –

+0

我知道,這只是afaik,$$是API記錄的方式。http://mootools.net/docs/core/Element/Element#Window:dollars – Alxandr

0

我固定我的代碼:

VAR IE8 = jQuery.browser.msie & & jQuery.browser.version == 「8.0」; (ie8?$('collapser')。document:$('collapser'))。getElements('div.menuTable');

乾杯!

相關問題