2011-02-08 73 views
0

我必須閱讀函數中的參數,以及它們是如何變量和/或對象,並傳遞一百萬次的值,而現實生活中的例子仍然讓我不知所措。本例中的關鍵字「this」指向函數的對象,即表單元素。好的。javascript函數參數命名要求

現在window.onload事件處理函數外部的函數有一個名爲「frm」的參數。我的問題是,是否有必要給這個參數的名稱與將被傳遞給它的form元素的id相同(在本例中是'frm')?我認爲這並不重要。對於所有問題,只要將它重用爲函數內部的局部變量,就可以將任何內容放入參數中。

window.onload = function() { 
    // validation for submit button 
    document.frmFlight.onsubmit = function() { 
     //console.log("what is 'this'?: "+this); 
     return validate(this); 
    }  
} 

//---------------------------------------------------------- 
function validate(frm) { 
    var valid = true; 
    return valid; 
} 
+0

恐怕關於「FRM」問題是根本不清楚,你能解釋一下多一點? – 2011-02-08 15:34:43

回答

1

目前尚不清楚究竟你問什麼,但名字會在函數簽名的參數以任何方式不涉及到任何東西,你可能會傳遞到功能名稱。它可以(只是)任何你想要的東西。這些都是等價的:

function validate(frm) { 
    // ... 
} 

function validate(theForm) { 
    // ... 
} 

function validate(foo) { 
    // ... 
} 

上面您使用就好了,因爲當你建立在你有這樣的事件處理程序(通過分配功能的onsubmit屬性),事件觸發時,該功能將被調用,以便this引用表單的DOM元素。假設這就是validate函數使用它的參數(不管它叫什麼),那麼你的狀態就很好。

+0

;是的,這回答了我的問題。它看起來很重要,但它看起來不像。謝謝! – Immers 2011-02-09 10:14:36

0

frm引用傳遞給該函數的變量。在您的示例this對象來自onLoad函數。在驗證功能中,它可以被稱爲任何你想要的。

1

函數參數名稱是任意的。您選擇的名稱與稍後傳遞給該函數的事物的類型沒有任何關係。

我的問題是,是否需要調用參數的形式元素的ID在這種情況下'frm'?

聽起來好像你在問「驗證」中參數的名稱是否需要匹配要傳遞給它的DOM元素的ID。 (我會重新說明這一點,使用比「call」更少的字)

答案是否定的。

要理解的一般概念是,您的函數沒有意識到將傳遞給它的事物的類型。您的函數「驗證」可以在運行時採用任何類型的參數。參數的名稱是不相關的。

+0

好吧!是的,這是我的問題,正是我的課程讓我感到困惑。我基本上需要確認它並不重要。 – Immers 2011-02-09 10:16:55

0

呀,你的問題是不是太清楚,但參數名稱(在這種情況下FRM)是隻是一些你會在傳遞一個參考例子:

function validate(frm){ 
    return true; 
} 

validate('Bob') 
validate(3) 
0

我不知道是否這是有關您的問題,但給你的參考「這個」關鍵字,如果你做到以下幾點在你的onsubmit處理:

return validate.call(this); 

那麼你的驗證功能中,「本」將指形式例如:

function validate(){ 
    var valid = this.elements[0].length > 0; 
    return valid; 
} 

此外,在這種情況下,你也可以這樣做:

document.frmFlight.onsubmit = validate;