0

我正在动态创建一个表单并附加元素:

var input = document.createElement('input');
input.name = extension_id + '[]';
input.value = value.id;
input.className = 'changeable';
input.type = 'radio';
input.checked = true;
wrapper_div.appendChild(input);

作为生成的 HTML 的示例(来自 Chrome):

<input name="2[]" class="changeable" type="radio" value="5">

在 Chrome 和 Firefox 中,javascript:

document.getElementsByName("2[]")[0].value

按预期返回“5”,但在 IE(我的测试中为 IE9)中返回“on”。

IE 忽略设置的值,而是返回检查状态是否有某些原因?

4

1 回答 1

3

基本上,这不是忽略值的问题,因为 IE 将元素视为对象 - 一个单选按钮,并将其初始化。

如果您打开调试器并单步执行代码,您可以看到确实设置了值 5。当您到达设置输入类型的行时,即input.type='radio'您可以看到该值从 5 变为“on”。将其视为 IE 在知道输入确实是单选按钮时调用单选按钮的构造函数。

修复?

在这种情况下很容易,只需更改语句的顺序即可。是的!就那么简单。设置类型,然后设置值。

这在 IE9 和 Chrome 中运行良好。

{
    var extension_id = 2;
    var input = document.createElement('input');
    input.name = extension_id + '[]';
    input.type = 'radio';
    input.checked = true;
    input.value = 5;
    input.className = 'changeable';
    document.body.appendChild(input);

    alert(input.value);
}

哦,在我忘记之前——你可以用 F12 在 IE 中打开调试器。- 有很多关于如何使用它的视频。:)

于 2012-11-08T12:17:18.403 回答