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

时间:2016-03-09 09:29:58

标签: javascript html onchange

我有一个包含多个值的表单。选择/更改值时,需要将其传递给函数。但是,这个函数是在另一个函数中定义的(保持这种方式会很好)。记住这个功能也有多个参数。

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具有的多个输入。

2 个答案:

答案 0 :(得分:1)

只要A存在(将其分配到窗口或文档)选择更改的位置和时间,您可能会执行以下操作:

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

请参阅example on jsfiddle

答案 1 :(得分:0)

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

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

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

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