[英]change text of corresponding label when checkbox is checked/unchecked
我无法让这个 javascript 函数工作。 任何帮助将非常感激!
<input type="checkbox" class="checkit" name="smoking" id="smoking" value="1" onclick="yesno('smoking','yesnos');" /><label for="smoking" name="yesnos" id="yesnos">No</label>
function yesno(thecheckbox, thelabel){
var checkboxvar = document.getElementById(thecheckbox);
var labelvar = document.getElementById(thelabel);
if (checkboxvar.checked == false){
document.getElementById(labelvar).innerHTML = "No";
}
else{
document.getElementById(labelvar).innerHTML = "Yes";
}
}
我将您的代码更改为此,它似乎可以工作:
function yesno(thecheckbox, thelabel) {
var checkboxvar = document.getElementById(thecheckbox);
var labelvar = document.getElementById(thelabel);
if (!checkboxvar.checked) {
labelvar.innerHTML = "No";
}
else {
labelvar.innerHTML = "Yes";
}
}
看到这里 jsFiddle
您还可以使其更短,更易读,如下所示:
<input type="checkbox" class="checkit"
name="smoking" id="smoking" value="1" onclick="yesno(this, 'yesnos');" />
<label for="smoking" name="yesnos" id="yesnos">No</label>
function yesno(chk, label) {
document.getElementById(label).innerHTML = chk.checked ? "Yes" : "No";
}
getElementById使用字符串,而不是Element。 我假设您正在将字符串传递给yesno函数...
一个问题是document.getElementById()应该带有标签,而不是labelvar。
另外,请确保您的复选框和“标签”(无论它是什么HTML元素)都具有id =“”属性。
该问题是由于将labelvar传递给document.getElementById引起的。 您已经通过设置var labelvar = document.getElementById来检索对元素的引用,因此可以将if语句更改为
if (checkboxvar.checked == false){
labelvar.innerHTML = "No";
}
else{
labelvar.innerHTML = "Yes";
}
我在jsfiddle中制作了一个纯JS版本: http : //jsfiddle.net/Zikes/wpwEW/
如果您使用的是jQuery之类的框架,则可以使它看起来更简洁。 否则,如果为了IE而可用,则需要对其进行修改以使用attachEvent。
您已经接近,但是您正在对已经具有的元素调用getElementById()
。
尝试这个
function yesno(thecheckbox, thelabel){
var checkboxvar = document.getElementById(thecheckbox);
var labelvar = document.getElementById(thelabel);
if (checkboxvar.checked == false){
labelvar.innerHTML = "No";
}
else{
labelvar.innerHTML = "Yes";
}
}
工作示例: http : //jsfiddle.net/QmkDB/
因为我现在每天都会使用它!
document.querySelectorAll('input[type="checkbox"]').forEach(function(checkbox) { checkbox.addEventListener('change', function (event) { let checkboxLabel = document.querySelector('label[for="'+checkbox.name+'"]'); if (checkboxLabel) checkboxLabel.textContent = checkbox.checked?"ON":"OFF"; }); });
<input type="checkbox" name="myCheckbox"> <label for="myCheckbox">OFF</label>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.