选中/取消选中复选框时更改相应标签的文本

时间:2011-03-22 17:18:06

标签: javascript

我无法使用这个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";
            }
        }

6 个答案:

答案 0 :(得分:3)

我将您的代码更改为此代码似乎有效:

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上的

See here

答案 1 :(得分:1)

你也可以缩短它,使其更具可读性:

<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";
}

答案 2 :(得分:0)

getElementById采用字符串,而不是Element。我假设你把字符串传递给yesno函数......

一个问题是document.getElementById()应该接受标签,而不是labelvar。

另外,请确保您的复选框和“标签”(无论HTML元素是什么)都具有id =“”属性。

答案 3 :(得分:0)

问题是由将labelvar传递给document.getElementById引起的。您已经通过设置var labelvar = document.getElementById检索了对元素的引用,因此您的if语句可以更改为

if (checkboxvar.checked == false){
  labelvar.innerHTML = "No";
}
else{
  labelvar.innerHTML = "Yes";
}

答案 4 :(得分:0)

我在jsfiddle中创建了一个纯JS版本:http://jsfiddle.net/Zikes/wpwEW/

如果您正在使用像jQuery这样的框架,我可以使它看起来更清洁一点。否则你需要修改它以使用attachEvent(如果IE可用的话)。

答案 5 :(得分:0)

你已经离我很近了,但你在一个你已经拥有的元素上调用了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/