2010-08-06 222 views
1

我正在使用Prototype(和script.aculo.us)JavaScript庫 - 因爲它是Rails的「標準配置」 - 並且存在以下問題片段:Javascript原型.visible()方法不能在Internet Explorer中工作

function show_hide_selects() 
{ 
    chkbox = document.getElementById('game_random_select') 
    seldiv = document.getElementById('card_selects') 

    if (chkbox.checked && seldiv.visible()) 
    { 
    Effect.BlindUp('card_selects', {duration: 0.5}) 
    Effect.BlindDown('random_options', {duration: 0.5}) 
    } 
    else if (!chkbox.checked && !seldiv.visible()) 
    { 
    Effect.BlindUp('random_options', {duration: 0.5}) 
    Effect.BlindDown('card_selects', {duration: 0.75}) 
    } 
} 

這個片段被解僱onClick爲「game_random_select」複選框控制用戶是否要指定卡名稱列表,或使服務器做出隨機選擇。它應該隱藏不相關的一組表單元素,並顯示相關的集合。

這在FireFox中正常工作,但在Internet Explorer(測試IE 8)中不起作用。它在其中一個if-test行中拋出一個錯誤「對象不支持此屬性或方法」;使用JS調試器表明它的seldiv.visible()不起作用。

如何檢測IE中元素的可見性 - 當然原型應該與IE完全兼容?或者我永遠不能用Prototype來管理它,並且應該切換到jQuery - 這顯然是Effort,因爲我需要讓Rails遵守。

+0

你也可以顯示HTML嗎? – 2010-08-06 10:33:54

回答

2

呵呵。自己排序,感謝閱讀API文檔並發現了我沒有做的事情。

seldiv.visible()不起作用,但$('card_selects').visible()呢。

0

你可以試試getStylehttp://www.prototypejs.org/api/element/getStyle,它將返回null如果元素具有的none一個display屬性。

+0

按照上面的方式運行,沒有區別。但API參考指出了我錯誤的地方 - 使用Prototype,所以我解決了這個問題。看到我自己的答案。 – Chowlett 2010-08-06 10:42:47

相關問題