0

我为这个相当基本的问题道歉,但我到此为止!

我有一个 javascript 函数,我想在页面加载时运行它......简单吧?我曾尝试将该功能放入文档准备就绪、窗口准备就绪、将其放在主要功能之前和之后等等。似乎没有任何效果。

到目前为止的代码:

function calcme() {         
    DA FUNCTON
    }

$(document).ready(function(){   
    calcme();
    $("input").bind("keyup", calcme);

});

请注意... keyup 绑定确实有效,但我需要 calcme 函数在页面加载时加载。想法?

更新:根据要求,这是完整的小提琴。http://jsfiddle.net/vpsSA/

4

2 回答 2

1

发现问题:该calcme()函数假定它是从输入之一的上下文中调用的,并在其中使用 this.value。因此,当您在没有任何参数的情况下调用它时,它显然会失败。这可以通过触发keyup每个输入来解决,而不是直接调用calcme()。请参阅下面的小提琴。

工作小提琴:http: //jsfiddle.net/vpsSA/1/


在您的ready()处理程序中,绑定语句出现在caclme()调用之后。正如您提到的,事件绑定有效。这表示:

a)calcme()肯定是在加载时执行的。没有其他办法,因为您已经提到calcme()调用之后的绑定语句按预期工作。

b)calcme()没有抛出任何 JS 错误 - 如果是这样,它将在错误处停止并且不会发生事件绑定。也许它会发出警告,您可以在 JS 控制台中看到它。

c) 由于您没有提供里面的内容calcme(),我们不能肯定地说。但它看起来像是某种条件失败,因为calcme()在负载运行时您没有得到预期的结果。您是否使用了在加载运行后calcme()初始化的任何内容。我建议在处理程序的第一行添加一个语句,并在 Firebug 或 Chrome 中跟踪它。debugger;ready()

于 2012-10-03T00:54:00.890 回答
0

试试这个:

function calcme() {         
   try {
      //your code
   }
   catch(e) {
      alert('error: ' + e);
   } 
}

if (typeof $ === undefined)) {
   alert('not jquery');
}

$(document).ready(function(){   

    if (typeof calcme === undefined) {
       alert('calcme not exist');
    }
    else {
       calcme();
       $("input").bind("keyup", calcme);
    }
});
于 2012-10-03T00:54:05.883 回答