this.form未在JavaScript函数中传递表单

时间:2016-05-08 06:33:03

标签: javascript html forms parameter-passing this

我的单个网页上有太多表单,每个表单都有不同的名称。现在我在每个表单中都有一个按钮,它使用固定参数获取该表单并将其传递给JavaScript函数。但在我的情况下,它不起作用,并给我错误Uncaught TypeError: Cannot read property 'name' of undefined或`未捕获的ReferenceError:updateContact未定义。我的脚本文件在这些表单之前附加,也在这些表单之后附加以用于检查目的。您可以看到有这个错误的实时DEMO At JSFiddle

的JavaScript:

<script type="text/JavaScript">
function updateContact(formName, id){
    var currentFormName = formName.name;
    alert(currentFormName + " - " + id);
}
</script>

HTML:

<form method="post" action="" name="updateAllContact0">
<a onClick="updateContact(this.form, 0)" >Update</a>
</form>
<form method="post" action="" name="updateAllContact1">
<a onClick="updateContact(this.form, 1)" >Update</a>
</form>
<form method="post" action="" name="updateAllContact2">
<a onClick="updateContact(this.form, 2)" >Update</a>
</form>
<form method="post" action="" name="updateAllContact3">
<a onClick="updateContact(this.form, 3)" >Update</a>
</form>
<form method="post" action="" name="updateAllContact4">
<a onClick="updateContact(this.form, 4)" >Update</a>
</form>
<form method="post" action="" name="updateAllContact5">
<a onClick="updateContact(this.form, 5)" >Update</a>
</form>
<!--
.
// Too Many Forms Of Unknown Length
.
<form method="post" action="" name="updateAllContactN">
<a onClick="updateContact(this.form, N)" >Update</a>
</form>
-->

没有我在我的代码中遇到的问题...... ???

3 个答案:

答案 0 :(得分:1)

尝试用this.parentElement.form代替this.form<a>元素没有form子节点。 <form>.parentElement元素的<a>

答案 1 :(得分:0)

一个问题是你不需要骆驼来攻击它 - 它应该是

 <a `...onclick="updateContact(this.form, 0)" >Update</a>...`

其次 - 这非常混乱 - 您应该能够清理它并在js中而不是在HTML中分配onclick事件处理程序

答案 2 :(得分:0)

显然这是一个很晚的答复,我在尝试查找HTML表单中此表单的功能时遇到了某些问题,因此我将回答其他人也可以学习的问题。

1)您的代码是完美的,我只是将所有<a>锚链接更改为<button>按钮,然后使代码起作用。

2)您的代码位于函数的结尾和内部(this.form,N)

<form method="post" action="" name="updateAllContactN">
<a onClick="updateContact(this.form, N)">Update</a>
</form>

应该与下面的类似。因为“ N”是用引号引起来的字符串,否则会给出错误。

updateContact(this.form, 'N');

我知道我将锚链接更改为button,但是通过使用锚文本不会对我产生任何结果。我不知道<a>是否可能。无论如何,错误:

“未捕获的TypeError:无法读取未定义的属性'名称'或未捕获的ReferenceError:未定义updateContact”

可能是因为在没有名称的情况下单独打印时,传递给函数的“ this.form”返回了[object HTMLFormElement]。因此,它也未按值定义,显示此错误。 IDK此错误可能是由于锚链接造成的,而我仅通过运行您的代码就没有这些错误。

希望有帮助。