Javascript 带有事件的函数的jQuery公共因子

Javascript 带有事件的函数的jQuery公共因子,javascript,jquery,html,Javascript,Jquery,Html,我有这个密码: $(document).ready( function(){ var gold; var silver; var copper; $("#gold").change(function(){ gold = $(this).val(); }); $("#silver").change(function(){ silver = $(this).val(); }); $("#copper")

我有这个密码:

$(document).ready( function(){
    var gold;
    var silver;
    var copper;

    $("#gold").change(function(){
        gold = $(this).val();
    });
    $("#silver").change(function(){
        silver = $(this).val();
    });
    $("#copper").change(function(){
        copper = $(this).val();
    });
});
只要文本字段更改,它就会更新变量,这是html:

<input type="text" id="gold">
<input type="text" id="silver">
<input type="text" id="copper">
对于我得到的每个变量,当我有100多个变量时,我能做什么?我想避免在YR事件中一个接一个地获取元素

我试过这样的方法:

var gold = dynamicValue("gold");

function dynamicValue(element){
    $("#" + element).change(function(){
        return $(this).val();
    });
}

但似乎不起作用

如果你觉得结构总是这样的话,我会推荐这样的东西

var values = {};

$('input').change(function(){
   values[this.id] = this.value;
});
这样,它将创建一个对象,ID作为键,in输入值作为键值

values = {
   gold: 'something',
   copper: 'something',
   silver: 'comething'
}
你随时都可以拿到

var gold = values.gold;
如果您得到
未定义
,则表示输入尚未更改。下面的例子

var值={};
$('input').change(函数(){
values[this.id]=this.value;
$('div').text(JSON.stringify(values));//此行仅用于示例
});

使用类并将id用作键

$(文档).ready(函数(){
var金属=
{金:空,银:空,铜:空}
$(“.inputs”).change(函数(){
金属[this.id]=$(this.val();
木材(金属);
});
});

金
银
铜
HTML

<input type="text" class="metal-input" id="gold">
<input type="text" class="metal-input" id="silver">
<input type="text" class="metal-input" id="copper">

$(“input[type='text']”)。更改(function(){…应该可以为您完成所有工作。您也可以对每个元素使用一个类,例如:$(“.myClass”)。更改(function(){如果用户仅使用上下文菜单粘贴一些值会怎么样?
input
event在这种情况下会更好:
$('.metal input')。on('input',function(){…})
每当我使用var gold=values.gold;或数组中的任何值时,我都会感到很难过,因为它不起作用,没有定义……但是lazy警报(values.gold)工作得很好。嗯,可能不够具体。你必须在定义值的同一范围内。如果你在document.ready中定义值,你只能在那里使用它。
<input type="text" class="metal-input" id="gold">
<input type="text" class="metal-input" id="silver">
<input type="text" class="metal-input" id="copper">
var metals = {};

$('.metal-input').on('input', function() {

    metals[this.id] = $(this).val();
    console.log(metals);
});