2012-01-26 57 views
1

我正在通过appendchild创建复选框。我希望能够检查他们的状态。我知道格式应该是document.form.checkboxname.value,但无论使用表单名称或复选框名称的组合如何,都不会给我一个回应。如何从Javascript中的appendchild复选框获取元素状态?

 var myParagraph=document.getElementById("myLine"); 
      myForm = document.createElement("FORM"); 
      myForm.setAttribute("name", "myForm2"); 
      mytable = document.createElement("TABLE"); 

     var CB_Delete = document.createElement('input'); 
      CB_Delete.type = "checkbox"; 
      CB_Delete.name = "CB_Test"; 
      CB_Delete.setAttribute("name", "CBTest2"); 
      CB_Delete.value = 2; 
      CB_Delete.onclick = answer; 
      theCell.appendChild(CB_Delete); 

回顾我想要回答函数给我一个警报,如果复选框被选中或没有。非常感谢! 要澄清什么我替换警报(document.form.checkbox.value)中的表单和复选框?

+0

您将复选框的不同值赋予属性和属性'name'。我不认为这是必要的。 – pimvdb

+0

为什么复选框被分配一个'.value' –

+0

@Matt为什么它会成为一个问题? – kapa

回答

3

CB_Delete.checked应该工作。见HTMLInputElement on MDN

console.log(CB_Delete.checked); 

jsFiddle Demo


  • 为了让您的复选框选中或取消选中,你会做分别或CB_Delete.checked = trueCB_Delete.checked = falsechecked是预期具有布尔值的对象属性。 CB_Delete.checked只是查询其当前值。

  • 在您的事件处理函数中,您可以引用当前处理事件的元素为this。所以从我以前的jsfiddle的例子:

    CB_Delete.onchange = function() { 
        console.log(this.checked); /* this refers to the checkbox here */ 
    }; 
    

    你可以在你的answer功能使用this为好。

  • 您可以阅读更多关于handling events on Quirksmode

  • 注意:使用CB_Delete.onchange是附加的事件处理程序的大部分时间一个很旧,并没有真正推荐的方式。使用CB_Delete.addEventListener('change', answer, false)是正确的方法。较早的IE会遇到问题,但他们有attachEvent()。你可以阅读约this technique and why to use it on Quirksmode(文章是3岁,在阅读像"Unfortunately few browsers support it at the moment."这样的东西时考虑到这一点)。要隐藏浏览器差异,可以使用类似jQuery这样的库。

+0

我必须在这里错过一些非常重要的东西。谢谢您的回答。 不会CB_Delete.checked只是使复选框被选中? 和console.log(CB_Delete.checked);只是告诉我,CB_Delete不是一个可识别的对象。 从函数分离函数“答案”什么我会让警报告诉我任何有关复选框(函数值等)?无论我尝试什么,都无法找到复选框。谢谢你的耐心。 – Zombian

+0

@Zombian我会给我的答案增加一些细节。 – kapa

+1

非常感谢你!你解决了我的问题,并给了我一些很好的文档。我很感激你为了增加更多而花费时间为我做这件事。 – Zombian

相关问题