javascript - 使用 JavaScript 更改所有未单击圆圈的 SVG 圆圈的 CSS 属性

标签 javascript html css svg

我现在包含一个包含多个 li 的列表,每个 li 包含一个 circle 我想要一种有效而不是硬编码的方法方法将未单击的每个圈子的类更改为禁用,并将单击的圈子的类更改为事件

如何使用 JS 通过循环而不是硬编码来高效地执行此操作?

<ul>
   <li>
     <svg>
         <circle ...> </circle>
         <span> Text </span>
     </svg>

   </li>
    --> repeated several more times
</ul>

如果我单击一个圆圈,如何有效地将被单击的圆圈的类更改为事件,并将所有未单击的圆圈更改为禁用以及svg 内的 span 是否可见?

最佳答案

您可能不需要设置“禁用”(如下面的片段所示)。

let circles = [...document.querySelectorAll('circle')];

circles.forEach(c => c.onclick = e=> {
  circles.forEach(cc=> cc.classList.remove('active'));
  e.target.classList.add('active');
});

let circles = [...document.querySelectorAll('circle')];

circles.forEach(c => c.onclick = e=> {
  circles.forEach(cc=> cc.classList.remove('active'));
  e.target.classList.add('active');
});
svg { height: 50px; width: 50px; }
.circ {
  stroke: black;
  stroke-width: 3;
  fill: gray;
  cursor: pointer;
}

.active { fill: red; }
<ul>
   <li>
     <svg>
         <circle cx="25" cy="25" r="20" class="circ active"  />       
         <span> Text </span>
     </svg>
   </li>
   
   <li>
     <svg>
         <circle cx="25" cy="25" r="20" class="circ"  />       
         <span> Text </span>
     </svg>
   </li>
   
   <li>
     <svg>
         <circle cx="25" cy="25" r="20" class="circ"  />       
         <span> Text </span>
     </svg>
   </li>
</ul>

关于javascript - 使用 JavaScript 更改所有未单击圆圈的 SVG 圆圈的 CSS 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57534725/

相关文章:

javascript - 如何从html表格中的选择框获取值

javascript - Angular Js : get $localStorage value in view page

javascript - Spring MVC 和 Thymeleaf 资源版本控制

javascript - Controller 和 postLink 初始化后重置指令中的范围变量;

php - 用 PHP 获取 img src

javascript - 在 Javascript 中使用命名空间时 dataTransfer 为 null

JavaScript 动画挂起

html - 宽度为 100% 的 div,包括边距

css - 如何让堆叠的div垂直向上生长?

javascript - 不太了解提供 gzip(压缩)JavaScript 和 CSS 文件