我正在使用Prototype(和script.aculo.us)javascript库 - 因为它是Rails“标配”所带来的 - 并且对以下代码段有疑问:
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})
}
}
此代码段会针对“game_random_select”复选框触发onClick
,该复选框控制用户是否要指定卡名列表,或让服务器随机选择。它应隐藏不相关的表单元素集,并显示相关集。
这在FireFox中运行良好,但在Internet Explorer(测试IE 8)中不起作用。它在if-test行之一上抛出错误“Object不支持此属性或方法”;使用JS调试器表明它是seldiv.visible()
不起作用。
如何在IE中检测元素的可见性 - 当然Prototype应该与IE完全兼容?或者我永远无法使用Prototype来管理它,并且应该切换到jQuery - 这显然是Effort,因为我还需要让Rails遵守。
答案 0 :(得分:2)
咦。我自己对此进行了排序,这要归功于阅读API文档并发现我没有做的事情。
seldiv.visible()
无效,但$('card_selects').visible()
无效。
答案 1 :(得分:0)
您可以尝试getStyle http://www.prototypejs.org/api/element/getStyle,如果该元素的null
属性为display
,则会返回none
。