Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用相同的按键显示一个div,并使用Javascript反复隐藏另一个div_Javascript_Jquery_Css_Html - Fatal编程技术网

使用相同的按键显示一个div,并使用Javascript反复隐藏另一个div

使用相同的按键显示一个div,并使用Javascript反复隐藏另一个div,javascript,jquery,css,html,Javascript,Jquery,Css,Html,让我们调用有问题的2个div div1和div2 我试图做的是使用enter键显示div1和隐藏div2(如果div2当前可见),反之亦然。现在我有了代码,所以按enter键将显示div1和隐藏div2,但要返回到显示div2和隐藏div1,必须使用shift键。它现在的工作方式,但我希望它,所以我只需要按回车键,每次我希望的div交替 下面是javascript代码 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.

让我们调用有问题的2个div div1和div2

我试图做的是使用enter键显示div1和隐藏div2(如果div2当前可见),反之亦然。现在我有了代码,所以按enter键将显示div1和隐藏div2,但要返回到显示div2和隐藏div1,必须使用shift键。它现在的工作方式,但我希望它,所以我只需要按回车键,每次我希望的div交替

下面是javascript代码

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    var keys = [];
    var code = [13];
    var keys1=[];
    var code1 = [16];
    $(document).keydown(function(keyEvent) {
      keys.push(keyEvent.keyCode);
      keys1.push(keyEvent.keyCode);
      if ( keys.length > code.length ) {
        keys.shift();
      }
      if ( keys1.length > code1.length ) {
        keys1.shift();
      }
      if ( keys.toString() == code.toString() ) {
        showAns();
      }
      if ( keys1.toString() == code1.toString() ) {
        hideAns();
      }

    });
  });
</script>

$(文档).ready(函数(){
var键=[];
var代码=[13];
var keys1=[];
变量代码1=[16];
$(文档).keydown(函数)(keyEvent){
按键(keyEvent.keyCode);
按键1.push(keyEvent.keyCode);
如果(keys.length>code.length){
keys.shift();
}
如果(keys1.length>code1.length){
键1.shift();
}
if(key.toString()==code.toString()){
showAns();
}
if(keys1.toString()==code1.toString()){
hideAns();
}
});
});

你知道如何完成我的要求吗?

我会给你一个正确的方向,但不会直接给你答案

您需要找到一种方法来检查元素可见性的属性(这可能会对您有所帮助!),并将其添加到您的conidtion中,如下所示:

if(KeyIsPressed && element.IsVisible)
{
HideElement
}
else if(KeyisPressed)
{
ShowElement
}

您可以使用“state”变量保存该信息,然后将其同步到DOM,而不必太花哨:

var state = {
  "div1": true,
  "div2": false,
};

synchronizeState();

$(document).on("keydown", function(event) {
  if(event.which === 13) {
    state.div1 = !state.div1;
    state.div2 = !state.div2;
    synchronizeState();
  }
});

function synchronizeState() {
  if(state.div1) {
    $("#div1").show();
  } else {
    $("#div1").hide();
  }

  if(state.div2) {
    $("#div2").show();
  } else {
    $("#div2").hide();
  }
}

工作示例:

尝试以下您想要实现的示例:

var toShow = true;
$(document).keydown(function(keyEvent) {
    if(keyEvent.keyCode == 13){
            $('#div1').toggle(toShow);
            $('#div2').toggle(!toShow);
        toShow = !toShow;
    }
});

我尝试了一些类似的方法:if(keyEvent.keyCode==13&&document.getElementById(“hideAnswer”).style.visibility==“visible”)showAns和类似的方法,但它仍然不起作用。我最终同意了尼克斯的答案,结果成功了。谢谢你