如何指定在另一个函数中定义的 onchange 函数?

How to specify onchange function that is defined within another function?

我有一个包含多个值的表单。当值为 selected/changed 时,需要将其传递给函数。然而,这个函数是在另一个函数中定义的(最好保持这种状态)。心目中的函数也有多个参数。

HTML

<select onChange="selectValue(this.value, x, y)">
<option value="Value 1"> Value 1 </option>

JS

function FunctionOne()
{
  this.selectValue = function(value, x, y) { /* do something */ }
}

所以我会像这样在别处调用这个函数:

A = new FunctionOne();

A.selectValue(value, 1, 2) // where value is specified from an instance of my data (irrelevant to the problme I'm having)

这样就找不到 onchange 函数,理想情况下我不想在其他函数之外定义它。此外,我不确定如何在 HTML 代码中处理 selectValue 的多个输入。

只要 A 存在(将其分配到 window 或文档)选择更改的时间和地点,您可能会这样做:

<select onChange="function(){A.selectValue(this.value, x, y);}">

example on jsfiddle

函数是一个闭包,它定义了一个私有范围。我建议尝试模块模式,这对所有 javascript 来说都是一个很好的模式(你会看到它被 jQuery 使用,被 Mozilla 等推荐)。你的情况是这样的:

function functionOne() {
    var methods =  {
        selectValue: function(value, x, y) {
           //Do something here
        }
    };
    return methods;
}

现在您可以执行以下操作:

new functionOne().selectValue(a, b, c);