Javascript 可以在函数内部更改一个或另一个变量

Javascript 可以在函数内部更改一个或另一个变量,javascript,jquery,function,Javascript,Jquery,Function,我不知道这是否可能,所以我想这是一个可以问的地方 我有两个输入,每个输入都有一个唯一的值。它们各自有各自的变量,值保存在其中。我想知道是否有一种方法可以只使用一个函数来更新它们的值,而不是使用两个单独的函数。下面是到目前为止我的代码 <form> <input type="text" id="valueOne" onchange="changeValueOne(this.value)"> <input type="text" id="valueTwo

我不知道这是否可能,所以我想这是一个可以问的地方

我有两个输入,每个输入都有一个唯一的值。它们各自有各自的变量,值保存在其中。我想知道是否有一种方法可以只使用一个函数来更新它们的值,而不是使用两个单独的函数。下面是到目前为止我的代码

<form>
    <input type="text" id="valueOne" onchange="changeValueOne(this.value)">
    <input type="text" id="valueTwo" onchange="changeValueTwo(this.value)">
</form>


var valueOne = parseFloat($('#valueOne'));
var valueTwo = parseFloat($('#valueTwo'));

function changeValueOne(newValueOne) {
    valueOne = newValueOne;
}
function changeValueTwo(newValueTwo) {
    valueTwo = newValueTwo;
}

var valueOne=parseFloat($('#valueOne');
var valueTwo=parseFloat($('#valueTwo');
函数changeValueOne(newValueOne){
valueOne=新valueOne;
}
函数changeValueTwo(newValueTwo){
valueTwo=newValueTwo;
}
试试这个:

var valueOne, valueTwo;

$("#valueOne, #valueTwo").change(function(){
    if($(this).attr('id') == 'valueOne') {
        valueOne = $(this).val();
    } else {
        valueTwo = $(this).val();
    }
});

您可以使用第二个参数来指示要存储的变量和/或位置

var values;
function changeValue(newValue, pos){
   values[pos] = newValue;
}
将html更改为:

 <input type="text" id="valueOne" onchange="changeValue(this.value, 'first')">
 <input type="text" id="valueOne" onchange="changeValue(this.value, 'second')">

简单的可扩展方式使用集合而不是变量:

<form>
    <input type="text" id="valueOne" onchange="changeValue(value, id)">  
    <input type="text" id="valueTwo" onchange="changeValue(value, id)">
</form>

<script>
var vals={ 
    valueOne : parseFloat($('#valueOne').val()),
    valueTwo : parseFloat($('#valueTwo').val())
};

function changeValue(newValue, slot) {
    vals[slot] = newValue;
}

</script>

var VAL={
valueOne:parseFloat($('#valueOne').val()),
valueTwo:parseFloat($('#valueTwo').val()
};
函数changeValue(新值,插槽){
VAL[插槽]=新值;
}

它不仅非常简单和快速,还允许您添加许多选项,而无需重新编写分叉代码(
if
s),您只需修改
vals
对象,处理程序将自动跟踪所有可用选项,甚至在需要时动态创建新选项(来自运行时期间追加的新输入).

您的
parseFloat
调用似乎没有多大意义,因为您是在输入元素上调用它,而不是在它们的值上调用它。回答得好。为了安全起见,我会在比较中使用三重等于。这不会改变全局变量,只需定义新的局部变量,它们会立即被丢弃。
<form>
    <input type="text" id="valueOne" onchange="changeValue(value, id)">  
    <input type="text" id="valueTwo" onchange="changeValue(value, id)">
</form>

<script>
var vals={ 
    valueOne : parseFloat($('#valueOne').val()),
    valueTwo : parseFloat($('#valueTwo').val())
};

function changeValue(newValue, slot) {
    vals[slot] = newValue;
}

</script>