首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用少于20行代码更改多文本的颜色

用少于20行代码更改多文本的颜色
EN

Stack Overflow用户
提问于 2022-03-09 14:53:41
回答 1查看 42关注 0票数 -2

我有8个段落,我希望当我单击这8个中的一个时,类' one‘p class =“one”激活"one- active“,然后删除其他活动。

在不到20行或更多的代码中,这就是我到目前为止所做的,代码运行和工作,但是对于8行代码来说,p>是太多的代码,我可以用更少的代码行来做同样的事情。我只为两个p写,因为有很多代码

代码语言:javascript
复制
let one = document.querySelector('.one')
let two = document.querySelector('.two')
let three = document.querySelector('.three')
let four = document.querySelector('.four')
let five = document.querySelector('.five')

function changecolor1(){
  one.classList.toggle('one-active');
  two.classList.remove('two-active');

} 
function changecolor2(){
  two.classList.toggle('two-active');
  one.classList.remove('one-active')

}   
  
  const ButtonChange1 = () => {
    one.addEventListener('click', () => {
      changecolor1();
    });
  }
  ButtonChange1();
  
  const ButtonChange2 = () => {
    two.addEventListener('click', () => {
      changecolor2();
    });
  }
  ButtonChange2();
代码语言:javascript
复制
.one{
    color: rgb(11, 28, 47);
    background-color: rgb(255, 255, 255);
  }
  
  
.one-active{
    color: rgb(255, 255, 255);
    background-color: rgb(11, 28, 47);
  }
  .two{
    color: rgb(11, 28, 47);
    background-color: rgb(255, 255, 255);
  }
  
  
.two-active{
    color: rgb(255, 255, 255);
    background-color: rgb(11, 28, 47);
  }
  .three{
    color: rgb(11, 28, 47);
    background-color: rgb(255, 255, 255);
  }
  
  
.three-active{
    color: rgb(255, 255, 255);
    background-color: rgb(11, 28, 47);
  }
  .four{
    color: rgb(11, 28, 47);
    background-color: rgb(255, 255, 255);
  }
  
  
.four-active{
    color: rgb(255, 255, 255);
    background-color: rgb(11, 28, 47);
  }

  .five{
    color: rgb(11, 28, 47);
    background-color: rgb(255, 255, 255);
  }
  
  
.five-active{
    color: rgb(255, 255, 255);
    background-color: rgb(11, 28, 47);
  }
代码语言:javascript
复制
            <p class="one">COSA È</p>
            <p class="two">COSA È</p>
            <p class="three">COSA È</p>
            <p class="four">COSA È</p>
            <p class="five">COSA È</p>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-09 15:09:42

首先,对于每个p元素不需要单独的类。只要一个CSS规则就可以指示条目是活动的了。而且,对于每个元素,您也不需要一个单击处理程序,而是可以在父元素上使用一个单击处理程序来处理激活和取消激活。

代码语言:javascript
复制
let container = document.querySelector(".container");

container.addEventListener("click", ({
  target
}) => {
  if (target.nodeName !== "P") return; // return if p is not clicked
  Array.from(document.querySelectorAll(".container>p")).forEach(p => p.classList.remove("active")); // make the others inactive
  target.classList.toggle("active");
});
代码语言:javascript
复制
.container p {
  color: rgb(11, 28, 47);
  background-color: rgb(255, 255, 2);
}

.container p.active {
  color: rgb(255, 255, 255);
  background-color: rgb(11, 28, 47) !important;
}
代码语言:javascript
复制
<div class="container">
  <p class="active">COSA È</p>
  <p>COSA È</p>
  <p>COSA È</p>
  <p>COSA È</p>
  <p>COSA È</p>
</div>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71411286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档