如何在Internet Explorer中通过javascript正确创建和操作复选框?

时间:2009-11-20 20:12:37

标签: javascript internet-explorer dom

我正在写一个网络应用程序。根据用户选择的某些选项,它会动态创建许多复选框输入元素。为了便于使用,应该在已检查状态下创建它们,并且用户将取消选中他们不想要的状态。

我的代码在Firefox中运行良好。不幸的是,我必须针对IE 7.0。在那里,我没有运气。以下是相关部分。

这会在DIV框中创建一个复选框,其中包含ID的CboxBlock。

function InsertCheckBox(name, appfk)
{
   // Create the text box node.
   var tbox = document.createElement('input');

   // Set all the values.
   tbox.type = "checkbox";
   tbox.checked = "checked";
   tbox.name = "cbox";
   tbox.value = appfk;

   // Next, we need a paragraph element to place it in.
   var para = document.createElement('p');

   // Text to place inside P
   para.appendChild(  document.createTextNode(name) );

   // Append text box
   para.appendChild(tbox);

   // Attach to the CboxBlock
   block = document.getElementById("CboxBlock");
   block.appendChild( para );

}

在Firefox中,这可以立即使用。选中复选框。在IE中,它们不是。所以我在创建后添加了另一个函数:

function SetCheckboxes()
{
   block = document.getElementById("CboxBlock")
   //cboxes = document.getElementsByName("cbox");

   cboxes = block.childNodes;

   for (ind in cboxes)
   {
      box = cboxes[ind];
      box.checked = "checked";

   }
}

我发现了一个愚蠢的错误,其中getElementsByName没有返回任何东西,但这仍然没有改变。文本框保持不变。我甚至尝试将它更改为box.checked = true,就像我在一些地方看到的那样,但仍然没有改变它。

任何人都可以看到我可能犯错误的地方吗?还有其他方法我应该操纵IE中的复选框吗?感谢您提供的任何信息。

1 个答案:

答案 0 :(得分:1)

我相信IE会将其作为属性访问,而不是属性。

box.setAttribute('checked', 'checked');
相关问题