簡體   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