使用if语句在多个元素的'click'事件中更改样式属性

时间:2018-11-21 20:23:04

标签: javascript dom addeventlistener

我有一个简单的待办事项列表(<ul>)。当用户单击<li>时,textDecoration属性将变为“ line-through”。我希望能够以某种方式“撤消”。这是我的代码...

const lis = document.querySelectorAll('li');
lis.forEach(li => li.addEventListener('click', taskHandler));

function taskHandler(e) {
    const li = e.target;
    if ((li.style.textDecoration = 'none')) {
        li.style.textDecoration = 'line-through';
        console.log(`${li.textContent} is done`);
    } else {
        li.style.textDecoration = 'none';
        console.log(`${li.textContent} is undone`);
    }
}

我的问题是:为什么else块不起作用?以及如何解决此代码?

谢谢!

1 个答案:

答案 0 :(得分:0)

您使用单个=赋值运算符进行比较:

if ((li.style.textDecoration = 'none'))

=====替换它:

if ((li.style.textDecoration == 'none'))

还不确定为什么要使用双(())括号吗?

if (li.style.textDecoration === 'none')

应该工作正常。