js函数没有在页面加载时运行?

时间:2012-10-03 00:41:07

标签: javascript jquery function

我为这个相当基本的问题道歉,但我在这里结束了!

我有一个javascript函数,我想在页面加载时运行...简单吧?我已经尝试将函数放在doc readys,window readys中,把它放在main函数之前和之后等等.NOWHING似乎有效。

到目前为止

代码:

function calcme() {         
    DA FUNCTON
    }

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

});

请注意...... keyup绑定DOES工作,但我需要在页面加载时加载calcme函数。想法?

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

2 个答案:

答案 0 :(得分:1)

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

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


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

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

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

c)既然你没有在calcme()内提供什么,我们不能肯定地说。但它看起来是某种情况失败,因为在加载运行时你没有从calcme()得到预期的结果。您是否在calcme()内使用在加载后运行它时的任何内容。我建议将debugger;语句作为ready()处理程序的第一行并在Firebug或Chrome中进行跟踪。

答案 1 :(得分: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);
    }
});