2010-08-06 223 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

相关问题