我的工作项目和我的目标是切换每个单独的li元素点击切换按钮。我设法做到这一点,但它的工作只对第一个li元素。你能帮我这个代码?
<li id="liEl">Target This element</li>
<button id="Btn">toggle</button>
<li id="liEl" >Target This element</li>
<button id="Btn">toggle</button>
<li id="liEl" >Target This element</li>
<button id="Btn">toggle</button>
.done {
text-decoration: line-through;
text-decoration-thickness: 0.2rem;
text-decoration-color:red;
}
Btn= document.getElementById("Btn");
liEl= document.getElementById("liEl");
const toggleDoneClass = () => {
liEl.classList.toggle('done');
};
Btn.addEventListener('click', toggleDoneClass);
3条答案
按热度按时间vsaztqbk1#
id属性必须唯一。您可以使用class来代替它。
必须选择所有按钮,然后通过循环向每个按钮添加事件侦听器。
现在这是工作。
jutyujz02#
您为所有按钮提供了相同的id,并且li使用类名代替id
它将选择所有包含按钮的类
循环所有你要点击的类,将得到那个元素,然后得到它们的前一个子元素li,并在上面切换类
一个一个二个一个一个一个三个一个一个一个一个一个四个一个
z3yyvxxp3#
ID在页面中应该是唯一的,所以可以将它们切换到类。
如果你想要这些按钮,你应该把它们添加到列表项元素中。
您可以将一个侦听器附加到
<ul>
元素,并让该侦听器在子元素"冒泡" DOM时捕获它们的事件(这称为event delegation)。当click事件被触发时,您可以检索用event.target单击的特定元素,检查它是否是按钮元素,找到该按钮的
closest
列表项元素,然后切换其类。但是,最终,你并不真的需要按钮。
一个一个三个一个一个一个一个一个四个一个一个一个一个一个五个一个