调用时函数未运行

时间:2014-06-12 13:02:27

标签: javascript

我遇到了我认为是一个相当简单的问题,但看不到错误。我有两个我想要调用的函数(一个用于显示日期,另一个用于关注文本输入框)。当我运行网页时没有任何反应,所以我很难过。

我在这里创造了一个小提琴:http://jsfiddle.net/dk9D9/

这是我正在使用的特定JavaScript。

var $ = function(id) { return document.getElementById(id); }

function todayTxt() {
   var today = new Date();
   return today.getMonth() + 1 + "-" + today.getDate() + "-" + today.getFullYear();
}

var initForm = function ()
{
    document.getElementById('qty1').focus()
}

window.onload = function () {
    $(initForm);
    $(todayTxt);
}

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:1)

您已将initForm函数定义为变量。你应该用:

来调用它
initForm();

关于todayTxt的同样的事情:

todayTxt();

$函数返回一个给定ID字符串作为参数的元素。它的有效用法是:

$('elementId')

有效代码可能如下所示:

var $ = function(id) { return document.getElementById(id); }

function todayTxt() {
   var today = new Date();
   return today.getMonth() + 1 + "-" + today.getDate() + "-" + today.getFullYear();
}

var initForm = function() {
    $('qty1').focus();
}

window.onload = function() {
    initForm();
    todayTxt();
}

答案 1 :(得分:1)

我的猜测是你没有调用这个功能。

$(something); 

正在检索something,但未将其作为函数调用。

为什么使用$(something)而不是将initform();作为常规功能?

答案 2 :(得分:0)

从入口点(window.onload)跟随调用链,您实际上只调用了2个函数:

  1. onload的匿名函数。
  2. $功能。
  3. 您已将$定义为document.getElementById(id)。当您致电$时,您将引用作为initForm参数传递到todayTxt$函数并传递到id。< / p>

    换句话说,当你打电话

    $(initForm)
    

    输入$时,我们正在调用

    document.getElementById(initForm);
    

    由于这两项功能都与$无关,您可能正在寻找:

    window.onload = function () {
        initForm();
        todayTxt();
    }
    

答案 3 :(得分:0)

似乎JSFiddle在JS输入部分调用了onload,因此设置另一个onload函数会阻止代码运行,所以我禁用了它并进行了必要的更改以使页面起作用。

http://jsfiddle.net/keWD5/

(您需要在实际页面中进行window.onload来电。)