表单提交上的setTimeout返回'not a function'错误

mjs*_*mer 0 javascript

我有以下内容:

var thiscode = {
init: function(){
    jQuery('#submit').bind('click',thiscode.clickListener);
},

clickListener: function(event){
    setTimeout('document.myform.submit()',5000);
    return false;
}
};
thiscode.init();
Run Code Online (Sandbox Code Playgroud)

setTimeout正在工作,但是当它触发时,我得到了这个:"document.myform.submit不是一个函数".

知道为什么和/或如何解决它?

Jos*_*ola 5

不要传递字符串setTimeout,传递匿名函数...

clickListener: function(event) {
  setTimeout(function() {
    document.myform.submit();
  }, 5000);
  return false;
}
Run Code Online (Sandbox Code Playgroud)

编辑:刚刚有一个启示.如果表单中的元素名称/ id为"submit",则会覆盖DOM中的submit函数(document.myform.submit现在将引用该元素而不是函数).如果是这种情况,则需要重命名该元素.


Que*_*tin 5

这可能与您使用setTimeout(其他人提出的问题)无关.

最可能的原因是你在表单中有一个名为submit(或者作为id的元素)的元素(可能是你与jQuery选择器匹配的元素),并且这已经用一个替换functionsubmit属性上的元素HTMLElementNode.

最简单的解决方案是重命名元素.