【问题标题】:Javascript - Hide other divs when one is clicked, but no double clickJavascript - 单击一个时隐藏其他 div,但不双击
【发布时间】:2013-08-27 21:54:54
【问题描述】:

我使用这个问题的答案来解决我最初遇到的问题: JavaScript - Hide all other divs

它适用于我需要做的事情,但我想这样做,以便当您单击用于激活幻灯片的原始 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 功能?仅当您单击其他字符时。

谢谢!

【问题讨论】:

  • 首先不要使用div作为变量名
  • 为什么不把divState[id] = (divState[id]) ? false : true; 改为divState[id] = true;。以及divid.style.display = (divid.style.display == 'block' ? 'none' : 'block');divid.style.display ='block'; 的行

标签: javascript html onclick show-hide


【解决方案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
}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    • 2013-01-18
    • 2012-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多