2011-02-08 75 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;