2010-07-28 19 views
2

我有這個JavaScript切換一個div和兩個圖像IE不會觸發我的網頁上元素

<script type="text/javascript"> 
function toggleArchiv() { 
    document.getElementById('cat').toggle(); 
    var image = document.getElementById('arrow'); 
    if (image.src == 'bullet_arrow_down.png') 
    { 
    image.src = 'bullet_arrow_up.png'; 
    } 
    else 
    { 
    image.src = 'bullet_arrow_down.png'; 
    } 
    } 
</script> 

正常工作的現代瀏覽器之間的切換,但IE口口聲聲說沒有在該行

錯誤
document.getElementById('cat').toggle(); 

所以它不會切換div,也不會切換圖像。該怎麼辦?

+3

'的document.getElementById( '貓')'(一元),沒有方法,'toggle' 。你是否將這種方法自己添加到原型中? – James 2010-07-28 08:20:16

+0

不是我所知道的。但爲什麼它在FF中起作用?它可能是一個用過的JS庫增加了這個方法,但是爲什麼IE沒有理解那麼......我將檢查 – 2010-07-28 08:23:53

+0

舊版本的IE不允許你訪問DOM原型。如果您的頁面以標準模式在IE8中呈現,則可以訪問它們。你使用哪些庫? – 2010-07-28 08:25:19

回答

1

它看起來像你對我正在使用的PrototypeJS庫。該庫將向DOM元素添加方法,在這種情況下,它將添加HTMLElement.prototype.toggle。 DOM原型僅在IE8及更高版本中受支持,並且必須以標準模式呈現。爲了得到它在所有瀏覽器的工作,使用$()方法而不是getElementById()

$('cat').toggle(); 

http://api.prototypejs.org/dom/element/toggle/

+0

有趣的是,我實際上使用IE8,並沒有在那裏工作 - 因此我甚至沒有嘗試過IE7。 – 2010-07-28 08:41:09

+0

@Apo:那麼很可能您的文檔不是在IE8標準模式下呈現。 – 2010-07-28 08:49:01

1

我認爲問題是調用HTMLElement而不是jQuery對象的toggle()。您應該使用jQuery選擇替代的getElementById()這樣的:

$('#cat').toggle(); 
+0

如果OP使用jQuery,那麼他的代碼不應**在FF中工作。 – 2010-07-28 08:30:11

相關問題