繁体   English   中英

调用时函数未运行

[英]Function Not Running When Called

我遇到了我认为是一个非常简单的问题,但是看不到错误。 我尝试调用两个函数(一个显示日期,另一个聚焦在文本输入框上)。 当我运行网页时,什么都没有发生,所以我很困惑。

我在这里创建了一个小提琴: 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);
}

任何帮助是极大的赞赏。

您已将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();
}

我的猜测是您没有调用该函数。

$(something); 

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

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

从入口点( window.onload )遵循调用链,实际上您只在调用两个函数:

  1. 您的onload匿名函数。
  2. $函数。

您已将$定义为document.getElementById(id) 调用$ ,您initForminitFormtodayTxt函数的引用作为id参数传递到$中。

换句话说,当您致电

$(initForm)

输入$时,我们正在调用

document.getElementById(initForm);

由于这两个函数都不与$ ,因此您可能正在寻找:

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

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

http://jsfiddle.net/keWD5/

(您将需要在实际页面中调用window.onload 。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM