Javascript 如何在IE7上按名称动态访问表单中插入的元素?

Javascript 如何在IE7上按名称动态访问表单中插入的元素?,javascript,forms,internet-explorer,dom,Javascript,Forms,Internet Explorer,Dom,以下面的代码为例,它动态地将一个输入元素插入到表单中(如果它还没有) <form id="form1"> <input type="button" value="Add field if not yet there" onclick="addField()" /> </form> <script> function addField() { var form1 = document.getElementB

以下面的代码为例,它动态地将一个输入元素插入到表单中(如果它还没有)

<form id="form1">

  <input type="button" value="Add field if not yet there" onclick="addField()" />

</form>

<script>

    function addField()
    {
        var form1 = document.getElementById("form1");
        var field = form1.elements["test"];
        if (!field)
        {
            field = document.createElement("input");
            field.type = "text"
            field.name = "test";
            form1.appendChild(field);
        }
    }

</script>

函数addField()
{
var form1=document.getElementById(“form1”);
var字段=form1.elements[“test”];
如果(!字段)
{
字段=document.createElement(“输入”);
field.type=“text”
field.name=“测试”;
表1.追加子项(字段);
}
}
此代码适用于所有现代浏览器,但无法在IE7上使用(字段未定义)

在IE7上,“elements”集合似乎不包含动态添加到DOM中的元素


除了保留对已创建元素的引用或设置标识符之外,是否有任何已知的解决方法?

为什么不给动态字段一个ID,因为ID对于整个HTML文档是唯一的?那么你就不必检查form1的子元素了,只要检查文档就行了。我对这种技术不太感兴趣,因为我实际上是在一个通用控件中动态创建隐藏字段的。是的,我可以将ID设置为与名称相同的值(只要它是唯一的),并通过ID获取元素。但是我想知道是否有其他解决方法允许您继续使用该名称。欢迎任何与此问题相关/讨论的链接。好的,我想您应该参考Microsoft JScript,它允许您在运行时更改名称。这不会导致编程模型中的名称在元素集合中发生更改,但会更改您用于提交元素的名称,这将解释为什么(尽管这种行为似乎从IE8开始发生了更改。您可以使用jQuery按名称获取元素)