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