JavaScript IE8 "this"始终为 "object window"

标签 javascript internet-explorer-8

<分区>

Possible Duplicate:
How to reference the caller object (“this”) using attachEvent

我对旧版 IE 中“this”的行为感到困惑。

警报(这个);总是返回 [对象窗口]。我知道答案是“使用 JQuery”,但不幸的是我不允许这样做。

我在一个页面上有多个表单,它们是由一个cgi脚本生成的。

当我试图在输入按钮上放置一个监听器时,问题就出现了。监听器将进行一些边界检查,然后提交表单。

 if (inputs[b].name === "Submit") {
     form = document.forms[f];
     form.attachEvent("onclick", function () {
         submit_valid();
     });
 }

我希望能够从“submit_valid”提交表单。

function submit_valid (form) {
    alert(this);
    this.submit();
}

调试器显示“对象不支持这个属性或方法”,所以很明显“this”没有按照我认为它应该做的去做。 :-)

“this”在 <= IE8 中有用吗?我应该怎么做才能提交表格?

最佳答案

在 submit_valid 函数中,您调用了未定义的 this.submit。您需要做的是调用 form.submit();

function submit_valid (form) {

    form.submit();
}

并在创建事件处理程序时附加 submit_valid 作为处理程序。

form.attachEvent("onclick", submit_valid);

关于JavaScript IE8 "this"始终为 "object window",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13381848/

相关文章:

javascript - Vue Composition Reactive 属性未在组件中更新

javascript - 协助切换变量

javascript - JW 播放器在 IE 8 中不工作

css - IE8 外部样式表和相对路径

internet-explorer-8 - 如何检测同一页面已在 IE 中的另一个窗口中打开

javascript - 访问对象中的对象变量

javascript - 如何查看字段在 mongodb 中按字母顺序变化的时间?

javascript - 具有相同 CSS 类的多个 &lt;input&gt; 已更新,而不是一个特定的

javascript - IE8 |不是对象错误

internet-explorer - Twitter Bootstrap 下拉菜单在 Internet Explorer 中的样式不正确(根据文档中的示例)