我一定读过关于函数中的参数,以及它们是如何成为变量和/或对象并传值一百万次的文章,但现实生活中的例子总是让我迷惑。本例中的关键字" this“指向函数的对象,即form元素。好的,明白了。
现在,window.onload事件处理程序外部的函数有一个名为"frm“的参数。我的问题是,这个参数是否有必要与将要传递给它的表单元素的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;
} 发布于 2011-02-08 23:36:20
不清楚您到底在问什么,但是您在函数签名中给出的参数的名称与您可能传递给函数的任何东西的名称没有任何关系。它可以是(几乎)任何你想要的东西。这些都是等效的:
function validate(frm) {
// ...
}
function validate(theForm) {
// ...
}
function validate(foo) {
// ...
}上面的用法很好,因为当您以现有的方式设置事件处理程序时(通过将函数分配给onsubmit属性),当事件触发时,将调用该函数,以便this引用表单的DOM元素。假设这就是validate函数使用其参数的目的(不管它如何调用它),那么您的状态就很好了。
发布于 2011-02-08 23:38:47
函数参数名称是任意的。您选择的名称与稍后传递给函数的对象类型没有任何关系。
我的问题是,在这种情况下,是否需要将参数称为
元素的id 'frm'?
听起来像是在问"validate“中的参数名称是否需要与将要传递给它的DOM元素的ID相匹配。(我要重申这一点,使用一个比“call”重载更少的词。)
答案是否定的。
要理解的一般概念是,您的函数不知道将传递给它的对象的类型。您的函数"validate“可以在运行时接受任何类型的参数。参数的名称无关紧要。
发布于 2011-02-08 23:37:10
frm是指传递给该函数的变量。在您的示例中,来自onLoad函数的this对象。在validate函数中,它可以被称为任何您想要的名称。
https://stackoverflow.com/questions/4934974
复制相似问题