Javascript切换问题

时间:2011-02-07 19:17:23

标签: javascript

我们的网站上有一些旧的代码,我似乎无法找到它为什么不能正常工作,所以我想知道新鲜的眼睛是否可以看到我不能。 这些是功能:

    function Toggle(item) {
   obj=document.getElementById(item);
   visible=(obj.style.display!="none")
   key=document.getElementById("x" + item);
   if (visible) {
     key.innerHTML="<img src='/images/common/leftsidebullet_closed.gif' height=10 width=10 border=0>";
     obj.style.display="none";
   } else {
      key.innerHTML="<img src='/images/common/leftsidebullet_opened.gif' height=10 width=10 border=0>";
      obj.style.display="block";
   }
}

function Toggle2(item) {
   obj=document.getElementById(item);
   visible=(obj.style.display!="none")
   key=document.getElementById("x" + item);
   if (visible) {
     obj.style.display="none";
     key.innerHTML="<img src='/images/common/leftsidebullet_closedOrange.gif' height=10 width=10 border=0>";
   } else {
      obj.style.display="block";
      key.innerHTML="<img src='/images/common/leftsidebullet_openedOrange.gif' height=10 width=10 border=0>";
   }
}

示例页面位于here 如果单击页面中间的“第1部分 - 规格”列表项,则需要两次单击才能实际触发切换,而不是第一次执行此操作。 它没有造成错误,我想不出其他任何事情,所以我想我会问别人是否能看到什么。

2 个答案:

答案 0 :(得分:2)

在页面加载时,display属性设置为''(在Chrome中)。这与'none'不同。因此visible错误地设置为true。因此,您的脚本希望通过在display设置'none'属性来隐藏div。第二次单击时,脚本会将visible评估为false。因此它通过将属性设置为block来显示div。

快速修复:

visible=(obj.style.display=="block")

代替

visible=(obj.style.display!="none")

答案 1 :(得分:0)

正如Jan所说......所以试试这个:

 visible=!(obj.style.display==="block");

将插入现有代码 - 或者您可以取出!并切换if语句。