javascript - 如何在激活另一个元素时关闭一个元素?

标签 javascript jquery html

我有两个元素。 如果 1 已经打开,那么当我打开 2 时,1 应该关闭。 我还是 javascript 的新手,所以如果有人愿意帮助,请谢谢。现在,当我尝试单击时,没有任何反应,如果我删除 while 循环,它就会起作用。也许我在那里有一些我不确定的错误,但它看起来是正确的逻辑基础。

<style>
.mystyle {
width: 300px;
height: 50px;
background-color: coral;
color: white;
font-size: 25px;
}

.newClassName {
width: 400px;
height: 100px;
background-color: lightblue;
text-align: center;
font-size: 25px;
color: navy;
margin-bottom: 10px;
}
</style>
</head>
<body>

<p>Click the button to toggle between two classes.</p>
<button onclick="myFunction()">Try it</button>
<button onclick="myFunction2()">Try it 2</button>

<div id="myDIV" class="mystyle">
I am a DIV element
</div>

<div id="myDIV2" class="mystyle">
I am a DIV element2
</div>
<script>
var x = document.getElementById("myDIV");
var y = document.getElementById("myDIV2");
function myFunction() {
x.classList.toggle("newClassName");
}
function myFunction2() {
y.classList.toggle("newClassName");
}
while (x.classList.contains("newClassName")) {
if (y.classList.contains("newClassName") = true) {
     x.classList.toggle("newClassName");
}
}

</script>
</body>

最佳答案

您混淆了纯 JavaScript 和 jQuery。我重写了剧本。我想这就是你想要的......

var x = $("#myDIV");
var y = $("#myDIV2");

function myFunction() {
    x.toggleClass("newClassName");
  
    if( x.hasClass("newClassName") ) {
        y.removeClass("newClassName");
    }
}

function myFunction2() {
    y.toggleClass("newClassName");
  
    if( y.hasClass("newClassName") ) {
        x.removeClass("newClassName");
    }
}
.mystyle {
  width: 300px;
  height: 50px;
  background-color: coral;
  color: white;
  font-size: 25px;
}

.newClassName {
  width: 400px;
  height: 100px;
  background-color: lightblue;
  text-align: center;
  font-size: 25px;
  color: navy;
  margin-bottom: 10px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<p>Click the button to toggle between two classes.</p>
<button onclick="myFunction()">Try it</button>
<button onclick="myFunction2()">Try it 2</button>

<div id="myDIV" class="mystyle">
  I am a DIV element
</div>

<div id="myDIV2" class="mystyle">
  I am a DIV element2
</div>

关于javascript - 如何在激活另一个元素时关闭一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38958854/

相关文章:

javascript - 使用 jquery 从 javascript 获取 iframe 页面标题

html - CSS 文本不正确,图片地址无效

jquery - jquery 滚动到插件比scrollTo 更好?

javascript - 无法使用 'in' 运算符搜索错误

javascript - 根据值的权重从 JSON 对象中删除重复值

javascript - 如何在 JavaScript 中查找 HTML 元素的位置?

javascript - 如何将非叶节点之前显示加号的方式更改为在 extjs 树面板中包含任何子节点的节点之前显示加号的方式?

javascript - 为什么 parseJSON 在服务器的以下响应中失败?

javascript - bb10 网络 : make a phone call

javascript - 在 javascript 中添加两个被 HTML 包围的变量