繁体   English   中英

用JavaScript改变按钮的class和div的显示

[英]Changing class of button and display of div with JavaScript

我有 JavaScript 在点击时显示/隐藏 div。 在那个 div 里面有更多的按钮来显示/隐藏 PNG。

我希望单击的按钮具有底部边框线,直到单击该 div 中的另一个按钮。

我已经做到了这一点,但每次我点击显示的 div 中的一个按钮时,当我点击下一个按钮时,底部边框线会停留在按钮上。

我花了几个小时试图解决这个问题。 请帮忙

let wildCard = document.querySelectorAll(".element-select-container button");
for (let button of wildCard) {
  button.addEventListener('click', (e) => {
    const et = e.target;
    const active = document.querySelector(".active");
    let redline = (".redline");


    if (active) {

    active.classList.remove("redline");
      active.classList.remove("active");

      }

      et.classList.add("active");
      et.classList.add("redline");

      let allContent = document.querySelectorAll('.button-wrapper');

          for (let content of allContent) {

      if(content.getAttribute('data-e') === button.getAttribute('data-e')) {
        content.style.display = "block";

      }

      else {
        content.style.display = "none";

     }
     }
   });
}

HTML

<div class="element-select-container">
<button id="but81" class="but81 redline" data-e="81"     type="button" name="">Doors</button>
<button id="but82" class="but82" data-e="82" type="button" name="">Windows</button>
<button id="but83" class="but83" data-e="83" type="button" name="">Facia</button>
<button id="but84" class="but84" data-e="84" type="button" name="">Guttering</button>

<button id="but85" class="but85" data-e="85" type="button"   name="">Garage</button>
<button id="but86" class="but86" data-e="86" type="button"    name="">Steps</button>
</div>

CSS

.redline {
border-bottom: 2px solid red;
}

问题是,在第一次加载时,第一个按钮是redline但不是active的 - 所以,当你按下不同的按钮时,从active中删除redline的代码找不到active的,所以redline没有被删除

简单的修复

const active = document.querySelector(".active,.redline");

如下

 let wildCard = document.querySelectorAll(".element-select-container button"); for (let button of wildCard) { button.addEventListener('click', (e) => { const et = e.target; const active = document.querySelector(".active,.redline"); if (active) { active.classList.remove("redline"); active.classList.remove("active"); } et.classList.add("active"); et.classList.add("redline"); let allContent = document.querySelectorAll('.button-wrapper'); for (let content of allContent) { if(content.getAttribute('data-e') === button.getAttribute('data-e')) { content.style.display = "block"; } else { content.style.display = "none"; } } }); }
 .redline { border-bottom: 2px solid red; }
 <div class="element-select-container"> <button id="but81" class="but81 redline" data-e="81" type="button" name="">Doors</button> <button id="but82" class="but82" data-e="82" type="button" name="">Windows</button> <button id="but83" class="but83" data-e="83" type="button" name="">Facia</button> <button id="but84" class="but84" data-e="84" type="button" name="">Guttering</button> <button id="but85" class="but85" data-e="85" type="button" name="">Garage</button> <button id="but86" class="but86" data-e="86" type="button" name="">Steps</button> </div>

JavaScript 用于更换<div>按下按钮的颜色</div><div id="text_translate"><p>当我的 html 和 JS 代码在同一个文件中时,我有点不确定为什么我的代码似乎不起作用。 当 html 和 JS 分开时,似乎工作正常。 有人可以指出我的错误....我是新手!</p><p> <strong>HTML:</strong></p><pre> &lt;div class="main"&gt; &lt;div class="light"&gt;&lt;/div&gt; &lt;button onclick="chngCol()" id="burn"&gt;Burn!&lt;/button&gt; &lt;/div&gt;</pre><p> <strong>JavaScript:</strong></p><pre> chngCol() { if(document.getElementByClass('light').style.background == "#00ffff") { document.getElementByClass('light').style.background = "#ffff00"; } else if(document.getElementByClass('light').style.background == "ffff00") { document.getElementByClass('light').style.background = "#ff00ff"; } else if(document.getElementByClass('light').style.background == "#ff00ff") { document.getElementByClass('light').style.background = "#00ffff"; } }</pre><p> <strong>CSS:</strong></p><pre> .light{ width: 50px; height: 50px; background-color:#00ffff; }</pre><p> 所有代码都在同一个文档中,带有适当的标签,但是我在第一个 { 调用 chngCol.</p></div>

[英]JavaScript for changing a <div> colour from a button press

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 改变一个<div>使用 JavaScript 进行类 使用JavaScript更改按钮类 使用Java显示变化的div宽度 使用javascript更改按钮类无效 用于在按钮单击时更改div高度的Javascript? JavaScript 用于更换<div>按下按钮的颜色</div><div id="text_translate"><p>当我的 html 和 JS 代码在同一个文件中时,我有点不确定为什么我的代码似乎不起作用。 当 html 和 JS 分开时,似乎工作正常。 有人可以指出我的错误....我是新手!</p><p> <strong>HTML:</strong></p><pre> &lt;div class="main"&gt; &lt;div class="light"&gt;&lt;/div&gt; &lt;button onclick="chngCol()" id="burn"&gt;Burn!&lt;/button&gt; &lt;/div&gt;</pre><p> <strong>JavaScript:</strong></p><pre> chngCol() { if(document.getElementByClass('light').style.background == "#00ffff") { document.getElementByClass('light').style.background = "#ffff00"; } else if(document.getElementByClass('light').style.background == "ffff00") { document.getElementByClass('light').style.background = "#ff00ff"; } else if(document.getElementByClass('light').style.background == "#ff00ff") { document.getElementByClass('light').style.background = "#00ffff"; } }</pre><p> <strong>CSS:</strong></p><pre> .light{ width: 50px; height: 50px; background-color:#00ffff; }</pre><p> 所有代码都在同一个文档中,带有适当的标签,但是我在第一个 { 调用 chngCol.</p></div> 内部html不更改javascript中的按钮显示 Javascript:更改div中第一个元素的类 使用JavaScript在aspx页面中更改div的类 使用javascript根据body类更改div的可见性
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM