2017-02-14 21 views
-2

好吧,所以我想在JS中为列表项创建一个基本的切换功能。到目前为止,我已经获得了我的if/else语句,但我似乎无法弄清楚的问题是为什么我的else语句不工作。语法看起来很不错,我没有看到任何一个错误出现,除了消除直通没有采取的事实。JS新手:非常基本的其他语句不工作

<li><input type="checkbox" onClick="check('box4')"><span id="box4">Mustard</span></li> 

function check() { 
    var el = document.getElementById('box4'); 
    if (el.checked = true) { 
     el.style.textDecoration = "line-through"; 
    } else { 
     el.style.textDecoration = "none"; 
    } 
} 
+0

'='是赋值,==''和''===比较有[IF语句的 – j08691

+3

可能的复制始终真(HTTP://计算器。com/questions/12814334/if-statement-always-true) –

回答

0

你不想检查,如果span检查,要检查input被选中。您可以将输入作为变量传递给函数,然后检查变量是否在JS中被检查。

而您在比较中缺少额外的======会比较前者和后者。单个=将前者设置为后者。

function check(el) { 
 
    var span = document.getElementById('box4'); 
 
    if (el.checked == true) { 
 
    span.style.textDecoration = "line-through"; 
 
    } else { 
 
    span.style.textDecoration = "none"; 
 
    } 
 
}
<li><input type="checkbox" onClick="check(this)"><span id="box4">Mustard</span></li>

1

if条件是错误的。使用===

0

您必须使用=====进行比较。第一个是抽象比较,第二个是严格比较,它也检查变量的类型。

如果您将评估布尔变量,您可以使用if(el.checked)进行简单检查。

最后,您正在评估量程值。因为你需要使用===

<li><input type="checkbox" onClick="check()" id="box4"><span>Mustard</span></li>

0

的if/else语句不工作:您可以从范围更改ID,输入复选框。

另一方面,代码的其余部分也将无法正常工作,因为您正在检查#box4元素,它是span因此它没有checked属性。

你应该给复选框的ID,以及找出如果它检查

function check() { 
 
    var el = document.getElementById('box4'), 
 
     span = document.getElementById('box4text'); 
 
    if (el.checked == true) { 
 
     span.style.textDecoration = "line-through"; 
 
    } else { 
 
     span.style.textDecoration = "none"; 
 
    } 
 
}
<li><input id="box4" type="checkbox" onClick="check('box4')"><span id="box4text">Mustard</span></li>

因为checked财产是你并不真的需要检查它的布尔等于true,可以直接使用if (el.checked)


此外,你可以完成相同的只用CSS

:checked + #box4{ 
 
text-decoration:line-through; 
 
}
<ul> 
 
    <li> 
 
    <input type="checkbox"><span id="box4">Mustard</span> 
 
    </li> 
 
</ul>

+0

谢谢,这工作!我看到我在做什么错,最重要的是,muchos gracias! – VinEdsel