我不知道这是否可能,所以我认为这是一个可以提问的地方。
我有两个输入,每个输入都有一个唯一值。它们各自都有各自的变量,值保存在其中。我想知道是否有一种方法只使用一个函数来更新它们的值而不是两个单独的值。以下是我目前的代码。
<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;
}
答案 0 :(得分:2)
试试这个:
var valueOne, valueTwo;
$("#valueOne, #valueTwo").change(function(){
if($(this).attr('id') == 'valueOne') {
valueOne = $(this).val();
} else {
valueTwo = $(this).val();
}
});
答案 1 :(得分:0)
您可以使用第二个参数来指示要存储的变量和/或位置。
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')">
或者,如果您想将它们存储在单独的变量中:
function changeValue(newValue, pos){
if(pos == 'first'){
valueOne = newValue;
} else if(pos == 'second'){
valueTwo = newValue;
}
}
答案 2 :(得分:0)
简单的可扩展方式使用集合而不是变量:
<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>
它不仅非常简单和快速,这使您可以添加许多选项而无需重新处理分叉代码(if
s),您只需要修改vals
对象,处理程序将自动跟上所有可用选项,甚至在需要时即时创建新选项(在运行时添加新输入)。