我必须阅读有关函数中的参数以及它们是变量和/或对象的方法,并且传递价值一百万次,而现实生活中的例子仍然让我失望。此示例中的关键字“this”指向函数的对象,即表单元素。好的,那就是。
现在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;
}
答案 0 :(得分:1)
目前尚不清楚你究竟在问什么,但你在函数签名中给出参数的名称与你可能将传递给函数的任何名称没有任何关系。 。它可以(几乎)你想要的任何东西。这些都是等价的:
function validate(frm) {
// ...
}
function validate(theForm) {
// ...
}
function validate(foo) {
// ...
}
上面的用法很好,因为当你以你拥有的方式设置事件处理程序时(通过向onsubmit
属性赋值),当事件触发时,将调用该函数, this
引用表单的DOM元素。假设validate
函数使用它的参数(不管它叫什么),你的状态都很好。
答案 1 :(得分:1)
功能参数名称是任意的。您选择的名称与以后传递给函数的事物类型没有任何关系。
我的问题是,是否需要在这种情况下调用参数form元素的id'frm'?
听起来你问的是“validate”中参数的名称是否需要匹配将传递给它的DOM元素的ID。 (我会重新声明这一点,使用比“call”更少重载的单词。)
答案是否定的。
要理解的一般概念是你的函数不知道将传递给它的事物的类型。您的函数“validate”可以在运行时获取任何类型的参数。参数的名称无关紧要。
答案 2 :(得分:0)
frm
是指传递给该函数的变量。在onLoad函数的示例this
对象中。在验证函数中,它可以被称为任何你想要的东西。
答案 3 :(得分:0)
是的,你的问题不太清楚,但参数名称(在本例中为frm)只是对你传入的内容的引用。例如:
function validate(frm){
return true;
}
validate('Bob')
validate(3)
答案 4 :(得分:0)
我不知道这是否与您的问题相关,但是如果您要在onsubmit处理程序中执行以下操作,请参考“this”关键字:
return validate.call(this);
然后在你的验证函数中,'this'将引用例如:
的形式function validate(){
var valid = this.elements[0].length > 0;
return valid;
}
此外,在这种情况下,你也可以这样做:
document.frmFlight.onsubmit = validate;