javascript更改开关按钮和元素的类

标签 javascript css

你好,

一个 friend 给了我这个改变开关按钮类的代码,但我做了修改,所以每个按钮通过像这样按下它们来改变 2 个独立元素的状态

function toggleClass(ev){
  var el = document.querySelector(".pressed");
  var fro = document.querySelector(".visible"); <--line added
  el.className = 'notpressed';
  ev.target.className = 'pressed';

  fro.className = 'notvisible'; <--line added
  ev.target.className = 'visible'; <--line added
}

span{
  cursor:pointer;
  padding:10px;
  border:1px solid #FCFCFC;
}
.notpressed{
  background:#CCC;
}
.pressed{
  background: #DFF789;
}
.visible{
  display:block;
}
.notvisible{
  display: none;
}

<span id="but1" class="pressed" onclick="toggleClass(event);">BUTTON 1</span>
<span id="but2" class="notpressed" onclick="toggleClass(event);">BUTTON 2</span>

<div id="elem1">hello<div>
<div id="elem2">bye<div>

但它不起作用。我错过了什么?

谢谢。

最佳答案

您没有关闭某些 div。试试下面的方法:

//initial setting
document.getElementById('elem2').className = 'notvisible';
document.getElementById('elem1').className = 'visible';
//on change
function toggleClass(ev){
  var fro = document.querySelector(".visible");
  var fro2 = document.querySelector(".notvisible");
  if(ev.target.id == 'but1'){
	document.getElementById('elem2').className = 'notvisible';
	document.getElementById('elem1').className = 'visible';
	ev.target.className = 'pressed';
	document.getElementById('but2').className = 'notpressed';
  }
  else if(ev.target.id == 'but2'){
	document.getElementById('elem1').className = 'notvisible'; 
	document.getElementById('elem2').className = 'visible';
	ev.target.className = 'pressed';
	document.getElementById('but1').className = 'notpressed';
  }
}
span{
  cursor:pointer;
  padding:10px;
  border:1px solid #FCFCFC;
}
.notpressed{
  background:#CCC;
}
.pressed{
  background: #DFF789;
}
.visible{
  display:block;
}
.notvisible{
  display: none;
}
<span id="but1" class="pressed" onclick="toggleClass(event);">BUTTON 1</span>
<span id="but2" class="notpressed" onclick="toggleClass(event);">BUTTON 2</span>



<div id="elem1" class="visible">hello</div>
<div id="elem2" class="notvisible">bye</div>

关于javascript更改开关按钮和元素的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47404767/

相关文章:

html - 对齐框上的文本

jquery - 图像边框和 ResponsiveSlides.js

html - 如何使 ul 与父 li 大小相同?

javascript - 如何在 PWA 中以编程方式将显示从独立切换到全屏

javascript - 是否可以通过网站控制手机上的相机灯?

javascript - 在 div 内以 100% 步长滚动

javascript - Typescript 中的日期时间时区转换问题

html - 导航菜单悬停不起作用

jquery - 在 div 中定位元素

javascript - jQuery 库与内联脚本冲突