Javascript 使用JS中的按钮切换菜单-但它同时显示两个菜单

Javascript 使用JS中的按钮切换菜单-但它同时显示两个菜单,javascript,Javascript,我想切换两个按钮提供的两个菜单。问题是,当我单击按钮一时,它会显示与按钮一绑定的菜单,但当我单击另一个按钮时,它会在我的登录页面上同时显示这两个菜单,而不是隐藏第一个,反之亦然。菜单由的ID标识;'html/JS中的“reqpwd”和“signup”。什么是沃恩?如果可能,还建议改进代码。我的JS代码: <script> window.onload = function() { document.getElementById('reqpwd').style.displ

我想切换两个按钮提供的两个菜单。问题是,当我单击按钮一时,它会显示与按钮一绑定的菜单,但当我单击另一个按钮时,它会在我的登录页面上同时显示这两个菜单,而不是隐藏第一个,反之亦然。菜单由的ID标识;'html/JS中的“reqpwd”和“signup”。什么是沃恩?如果可能,还建议改进代码。我的JS代码:

    <script>
  window.onload = function() {
  document.getElementById('reqpwd').style.display = 'none';
  document.getElementById('signup').style.display = 'none';
 };
function chk(elm) {
var signup_ = signup.id;
var reqpwd_ = reqpwd.id;
elm_ = elm.id;
if (elm_ == reqpwd_){
 hide(signup_);
 show(reqpwd_);
}
if (elm_== signup_){
 hide(reqpwd_);
show(signup_);
}
};

function show(abc) {
var menuBox  = document.getElementById(abc);
  if(menuBox.style.display == "none") { // if is menuBox displayed, hide it
    menuBox.style.display = "block";
} };

    function hide(abc){ // if is menuBox hidden, display it
var menuBox  = document.getElementById(abc);
if(menuBox.style.display == "block"){
    menuBox.style.display == "none";
    }
  };
</script>
而不是menuBox.style.display==none;尝试使用menuBox.style.visibility==hidden

编辑: 我对你的代码做了一些修改。你在加载时设置样式的方式对我来说没有多大意义,所以我不得不使用对我有意义的ID

编辑: 好吧,我的错。我更新了代码。我认为问题在于您在menuBox.style.display==none;上使用的是双等于,而不是单等于;。因此,菜单永远不会隐藏


最后,我使用flag变量作为状态指示器,得出了类似的结论。。现在,唯一的要求是检查切换,以及通过相同的按钮消失相关菜单。如果注册菜单已打开,则注册或重置按钮应将其关闭,反之亦然

window.onload = function() {
document.getElementById('regd').style.visibility = 'hidden'; //regisration msg
document.getElementById('rset').style.visibility = 'hidden'; //reset msg
document.getElementById('reqpwd').style.display = 'none';
document.getElementById('signup').style.display = 'none';
};
var flag = 0;

function chk(elm) {
var signup_ = signup.id;
var reqpwd_ = reqpwd.id;
elm_ = elm.id;

if (elm_ == reqpwd_ && flag === 0 || elm_ == reqpwd_ && flag == 2) {
    flag = 1;
    hide(signup_);
    show(reqpwd_);

}
if (elm_ == signup_ && flag === 0 || elm_ == signup_ && flag == 1) {
    flag = 2;
    show(signup_);
    hide(reqpwd_);

}
if (elm_ == reqpwd_ && flag == 1 || elm_ == signup_ && flag == 2) {
    hide(elm_);
    flag = 0;
}

};

function show(abc) {
var menuBox = document.getElementById(abc);
if (menuBox.style.display === "none") { // if is menuBox hidden, display it
    menuBox.style.display = "block";
}
};

function hide(abc) { // if is menuBox 
var menuBox = document.getElementById(abc);
if (menuBox.style.display === "block") { //if displayed, hide it
    menuBox.style.display = "none";
}
};

你怎么称呼chk?如果可能的话,还建议改进代码-运行它或以其他方式修复缩进:帮助我们通过呈现可读的代码来帮助您。请将您的html、css、js代码添加到IDLE/代码段中。快速解析将很有帮助。使用html按钮调用chk。每个按钮都将id作为参数传递。e、 g.注册菜单按钮将其称为:chksignup,密码重置菜单也是如此;chkreqpwd。对不起,我是新来的,所以无法编辑问题以重新发布缩进代码。我的html:RSKMR-尊敬的先生,幕后没有css。为什么会有帮助?没有帮助。其次,如果我按下相同的按钮,菜单应该是不可见的。。里面有很多绒毛,胡安·费雷尔爵士,很不错。但只有一个问题。正如我在上面的评论中强调的那样。按钮不会使自己的绑定菜单在按下时消失。注册按钮不会使显示的注册菜单消失。重置菜单也是如此。其次,初始状态应设置为“无”。表示初始状态和初始状态都不可见!只有一个问题。即使在声明一个标志以使按钮能够关闭其自己的菜单后,它也不会更新标志变量,因此无法关闭菜单,而不使用其各自的按钮。虽然切换菜单很好。真是妙极了!!!瞧!!!我终于成功了!!!在最后两个IFs之前添加else使满足所有7个条件成为可能!因此,这意味着不建议使用多个IFs,因为它与使用ELSE IF不同!感谢你们的支持,感谢我两天来不懈的努力和一次又一次的代码攻关_