Javascript Prototype .visible()方法在Internet Explorer中不起作用

时间:2010-08-06 10:27:09

标签: javascript internet-explorer prototypejs

我正在使用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遵守。

2 个答案:

答案 0 :(得分:2)

咦。我自己对此进行了排序,这要归功于阅读API文档并发现我没有做的事情。

seldiv.visible()无效,但$('card_selects').visible()无效。

答案 1 :(得分:0)

您可以尝试getStyle http://www.prototypejs.org/api/element/getStyle,如果该元素的null属性为display,则会返回none