javascript - 使用 JavaScript 为所有未点击的圆圈更改 SVG 圆圈的 CSS 属性
问题描述
我现在包含一个列表,其中包含几个li
,每个都li
包含一个circle
我想要一种有效且不硬编码的方法来更改每个未单击disabled
的圆圈的类以及单击的圆圈的类active
。
我怎样才能有效地通过循环而不是使用 JS 以编程方式进行硬编码来做到这一点?
<ul>
<li>
<svg>
<circle ...> </circle>
<span> Text </span>
</svg>
</li>
--> repeated several more times
</ul>
如果我点击一个圆圈,我如何有效地更改被点击的圆圈的类别active
和所有未点击的圆圈disabled
以及span
内部svg
是否可见?
解决方案
可能您不需要设置“禁用”(如下面的 sippet 所示)。
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>
推荐阅读
- jquery - 没有可用的数据数据表
- c# - 如何在双引号内转义引号?
- python - 如何在 Python 中将日期字符串转换为字符串格式
- angular - 如何使用ng-gallery for angular从角度10的画廊内的get请求中获取图像?
- antlr4 - ANTLR4 中用于分析数据类型和变量描述的识别器语法错误
- laravel - 删除laravel中的所有存储文件
- assembly - 当我尝试 DIV 时,我得到“除以零”但它不是零
- string - 如何在kotlin中从旧字符串创建新字符串
- java - 使用上下文路径的 POST 调用在 Spring Boot 2.x 中不起作用
- c - 客户端读取的字节数多于在 C 中发送的字节数 - linux