2013-08-27 61 views
0

我用了这个问题的答案的一个问题,我本来有: JavaScript - Hide all other divs使用Javascript - 隐藏当点击一个其它的div,但没有双击

它适用于什么,我需要做的,但我想这样做,当你点击你用来激活幻灯片的原始div时,它不会隐藏显示幻灯片。所以你没有双击当前活动div。

<script> 
var divState = {}; 
function showhide(id) { 
if (document.getElementById) { 
    var divid = document.getElementById(id); 
    divState[id] = (divState[id]) ? false : true; 
    //close others 
    for (var div in divState){ 
     if (divState[div] && div != id){ 
      document.getElementById(div).style.display = 'none'; 
      divState[div] = false; 
     } 
    } 
    divid.style.display = (divid.style.display == 'block' ? 'none' : 'block'); 
} 
} 
</script> 

你可以在这里查看我的项目,当您尝试点击一个字符,它改变了幻灯片,但是当你对他们的双击,它隐藏你在看幻灯片。我想阻止“隐藏”功能,所以如果您正在查看角色幻灯片。你不能再次点击他们的插图关闭它。但是,如果你点击不同的字符,它会隐藏/切换幻灯片: http://www.redvelvetevents.com/tracy/newtest_july2013.htm

希望这是有道理的。我需要添加到上面的代码,所以当前div不会激活该特定幻灯片的HIDE功能?只有当你点击一个不同的角色。

谢谢!

+0

先不使用DIV作为变量名 – Newben

+0

为什么不改变行'divState [ID] =(divState [ID])? false:true;'到'divState [id] = true;'。 'divid.style.display =(divid.style.display =='block'?'none':'block');'divid.style.display ='block';' –

回答

1

您可以更改您的代码如下:

var divState = {}; 
function showhide(id) { 
if (document.getElementById) { 
    var divid = document.getElementById(id); 
    divState[id] = true;//I changed this line 
    //close others 
    for (var div in divState){ 
     if (divState[div] && div != id){ 
      document.getElementById(div).style.display = 'none'; 
      divState[div] = false; 
     } 
    } 
    divid.style.display = 'block';//I changed this line 
} 
} 
+0

完美,谢谢!!!! – jgrannis

相关问题