2011-03-22 63 views
0

我无法获得此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

怎么样加入什么错误是t在你的网页浏览器中悬挂JavaScript错误控制台? :D – 2011-03-22 17:23:54

回答

2

我改变你的代码,这一点,似乎工作:

function yesno(thecheckbox, thelabel) { 

    var checkboxvar = document.getElementById(thecheckbox); 
    var labelvar = document.getElementById(thelabel); 
    if (!checkboxvar.checked) { 
     labelvar.innerHTML = "No"; 
    } 
    else { 
     labelvar.innerHTML = "Yes"; 
    } 
} 

See here上的jsfiddle

0

的getElementById需要一个字符串,而不是元素。我假设你将字符串传递给yesno函数...

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

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

+0

或..是的,你已经创建了labelVar引用,所以Swaff是对的。两者都可以正常工作。我建议只是将对象本身传递给复选框,这样您可以避免通过DOM搜索复选框...调用代码可能如下所示: Jmoney38 2011-03-22 17:25:54

0

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

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

我做在的jsfiddle纯JS版在这里:http://jsfiddle.net/Zikes/wpwEW/

如果你使用的是像jQuery这样的框架,我可以让它看起来更干净一些。否则,您需要修改它才能使用attachEvent(如果适用于IE)。

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/

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"; 
} 
相关问题