Javascript 从表单中删除添加的元素';行不通

Javascript 从表单中删除添加的元素';行不通,javascript,forms,Javascript,Forms,我试图从页面中完全删除一个元素(我动态添加的),但它似乎不太正常。问题是,在我从页面中删除一个元素后,它仍然出现在document.forms中,这给我带来了一个问题,因为页面稍后在处理一些其他数据时会自动抓取它。我无法更改下游操作,但我想知道是否有更好的方法删除输入。看看这个例子 Chrome 18和FF 13在IE 9正常工作的情况下都能正常工作,但我需要它在所有浏览器中都能正常工作-在怪癖模式下。在您的示例中,您缺少jQuery选择器中的所有#标记。当您根据元素的id选择元素时,必须始终在

我试图从页面中完全删除一个元素(我动态添加的),但它似乎不太正常。问题是,在我从页面中删除一个元素后,它仍然出现在
document.forms
中,这给我带来了一个问题,因为页面稍后在处理一些其他数据时会自动抓取它。我无法更改下游操作,但我想知道是否有更好的方法删除输入。看看这个例子


Chrome 18和FF 13在IE 9正常工作的情况下都能正常工作,但我需要它在所有浏览器中都能正常工作-在怪癖模式下。

在您的示例中,您缺少jQuery选择器中的所有
#
标记。当您根据元素的id选择元素时,必须始终在名称前包含一个
,对于类,必须像这样包含
-
$(“#包装器”)

我通过执行以下操作修复了您的示例-->

$(“#包装器#测试字段”).remove()


希望这有帮助

在您的示例中,jQuery选择器中缺少了所有的
#
标记。当您根据元素的id选择元素时,必须始终在名称前包含一个
,对于类,必须像这样包含
-
$(“#包装器”)

我通过执行以下操作修复了您的示例-->

$(“#包装器#测试字段”).remove()


希望这有帮助

我会使用
document.getElementById
而不是
document.forms


​编辑:根据的公认答案,您的问题可能与在
输入
元素上使用
名称
属性有关。

我将使用
文档。getElementById
而不是
文档。表单


​编辑:根据的公认答案,您的问题可能与在
input
元素上使用
name
属性有关。

考虑使用jQuery而不是Prototype.js。Prototype的最新版本已经过期2年了。@Diodeus:我很乐意,但不幸的是,这是一个公司产品,随着我们对Prototype库所做的更改,高层人员对更改非常抗拒。就我个人而言,如果我有办法的话,我会切换到jQuery…那太糟糕了。知道jQuery可以为您找到一份工作,Prototype就不会了。因为这个事实,我在三年前做出了改变。@Diodeus:哦,我知道,但这项工作的其余部分远远超过了使用Prototype的缺点:)考虑使用jQuery而不是Prototype.js。Prototype的最新版本已经过期2年了。@Diodeus:我很乐意,但不幸的是,这是一个公司产品,随着我们对Prototype库所做的更改,高层人员对更改非常抗拒。就我个人而言,如果我有办法的话,我会切换到jQuery…那太糟糕了。知道jQuery可以为您找到一份工作,Prototype就不会了。我三年前就因为这个事实而做出了改变。@Diodeus:哦,我知道,但这项工作的其余部分远远超过了使用Prototype的缺点:)他使用的是Prototype,而不是jquery。@josh.trow尽管错得很厉害,现在我将把我的答案留在这里,就好像你确实在考虑使用jQuery一样,这个例子对你来说是有效的。他使用的是原型,而不是jQuery。@ Jo.H.Trw,尽管是非常错误的,现在我将把我的答案留在这里,就好像你确实考虑过使用jQuery一样,这个例子会对你有用。不幸的是,它没有解决我的问题,因为我无法更改下游代码(它从
document.forms
获取信息)。但是,除非有人能在第二天左右找到更好的解决方案,否则我会接受这个建议,并尝试一些解决方法。我一定是在阅读一个与发布的人不同的文档-我读它的意思是,我们需要在表单提交中包含输入的
名称
属性-我认为我们不应该访问正常,按名称非输入页面项(div、span等)虽然这是有意义的,但不幸的是,它无法解决我的问题,因为我无法更改下游代码(并且它从
document.forms
获取信息)。但是,除非有人能在第二天左右找到更好的解决方案,否则我会接受这个建议,并尝试一些解决方法。我一定是在阅读一个与发布的人不同的文档-我读它的意思是,我们需要在表单提交中包含输入的
名称
属性-我认为我们不应该访问正常,按名称列出的非输入页面项(div、span等)
var testfield = document.getElementById('testfield');

console.log('VALUE before: ' + testfield .value);

document.getElementById('wrapper').removeChild(testfield);

console.log('VALUE after: ' + document.getElementById('testfield').value);