我正在写一个网络应用程序。根据用户选择的某些选项,它会动态创建许多复选框输入元素。为了便于使用,应该在已检查状态下创建它们,并且用户将取消选中他们不想要的状态。
我的代码在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中的复选框吗?感谢您提供的任何信息。
答案 0 :(得分:1)
我相信IE会将其作为属性访问,而不是属性。
box.setAttribute('checked', 'checked');