js 函数的行为因调用方式而异

js function behaves differently depending on how it is called

本文关键字:调用 方式 函数 js      更新时间:2023-09-26

我正在尝试这样做,以便更改选择标签的选定选项将提交与按钮相同的表单,我有:

function form_search()
{
    document.forms['myform'].process.value = 'search';
    document.forms['myform'].submit();
}

包含在 HTML 文件中的 /body 标记之前,包括:

<select name="attribute" form="myform" onchange="form_search();">
    <option value="op1">op1</option>
    <option value="op2">op2</option>
</select>
<input type="hidden" name="process">
<button onclick="form_search();">button</button>

当我点击按钮时,一切都像我期望的那样工作。但是,当我更改与选择标签关联的选项时,根据firebug,它似乎击中了js函数中的两行,但表单似乎没有提交。我认为在这种情况下,js 函数的document.forms['myform'].submit();行触发了一个错误。

知道发生了什么吗?当然,对没有参数的函数的两次调用应该表现相同吗?

如果

document.forms['myform'].submit();确实出错,那么最可能的原因是名为submit的表单内部的某些东西覆盖了DOM中表单的submit方法。不过,在您与我们共享的代码中没有迹象表明这一点。

鉴于:

更改选择将运行 JS。第一行将运行。第二行将出错,这就是它的结束。

单击该按钮将运行 JS。第一行将运行。第二行将出错。按钮的正常行为将继续,它将提交表单(使用标准 HTML 而不是 JS)提交表单)。