2017-02-14 58 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