Javascript 从多个输入中获取值,而无需重新编写相同的代码
在控制台中,这将产生Javascript 从多个输入中获取值,而无需重新编写相同的代码,javascript,jquery,arrays,Javascript,Jquery,Arrays,在控制台中,这将产生未定义、未定义的 但是,如果我运行这些,我会得到thing1和thing2 var attributeVariables = ['thing1', 'thing2']; $.each(attributeVariables, function(index, val) { attributeVariables[index] = $('input[name='+attributeVariables[index]+']:checked').val(); }); consol
未定义、未定义的
但是,如果我运行这些,我会得到thing1
和thing2
var attributeVariables = ['thing1', 'thing2'];
$.each(attributeVariables, function(index, val) {
attributeVariables[index] = $('input[name='+attributeVariables[index]+']:checked').val();
});
console.log(thing1+" , "+thing2)
我有一堆其他变量,它们的结构相同,可以得到它们的值。我尽量避免写50次以上的句子。我知道还有更好的方法,我想我在第一次发言中就做到了。有人能告诉我为什么这不起作用吗
更新:
我所要做的就是根据中的逻辑更新这些已经存在的变量(thing1
,thing2
),而不是将所有变量都存储在一个数组中
更新2:
用另一种方式重申……我不想用任何特定的方式来做这件事。我需要的是:我有大约30个无线电选择器,每个选择器与一个不同的变量相连。我没有为30个不同的变量(thing2=$('input[name=thing2]:checked').val();
)写30次,而是找到了一个快捷方式。我会列出我想要更新的所有变量(基于无线电状态),并运行一个,每个,如注释中所述,您不是控制台。log()
-ing正确的事情。否则,您的代码几乎就可以了。我认为您可以在每个中直接使用val
,而不是属性变量[索引]
然后可以执行条件检查,因为未选中复选框的val()
返回undefined
var attributeVariables=['thing1','thing2'];
$.each(属性变量、函数(索引、val){
属性变量[索引]={
姓名:val,,
选中:$('input[name='+val+']:选中').val()?true:false
};
});
console.log(属性变量);
console.log('--------------------------------------');
控制台日志(“单选按钮测试结果”);
var无线电=['thing3'、'thing4'、'thing5'、'thing6'];
$。每个(收音机、功能(idx、名称){
辐射值=[];
$。每个($('input[name='+name+']')、函数(i,收音机){
push({index:i,checked:radio.checked});
});
收音机[idx]={
姓名:姓名,,
radioValues:radioValues
};
});
控制台日志(无线电)代码>
如评论中所述,您不是console.log()
-ing正确的选择。否则,您的代码几乎就可以了。我认为您可以在每个中直接使用val
,而不是属性变量[索引]
然后可以执行条件检查,因为未选中复选框的val()
返回undefined
var attributeVariables=['thing1','thing2'];
$.each(属性变量、函数(索引、val){
属性变量[索引]={
姓名:val,,
选中:$('input[name='+val+']:选中').val()?true:false
};
});
console.log(属性变量);
console.log('--------------------------------------');
控制台日志(“单选按钮测试结果”);
var无线电=['thing3'、'thing4'、'thing5'、'thing6'];
$。每个(收音机、功能(idx、名称){
辐射值=[];
$。每个($('input[name='+name+']')、函数(i,收音机){
push({index:i,checked:radio.checked});
});
收音机[idx]={
姓名:姓名,,
radioValues:radioValues
};
});
控制台日志(无线电)代码>
试试这个。它可能有用
thing1 = $('input[name=thing1]:checked').val();
thing2 = $('input[name=thing2]:checked').val();
在inputsObject中,如果存在对(name=>value),则u将有对。试试这个。它可能有用
thing1 = $('input[name=thing1]:checked').val();
thing2 = $('input[name=thing2]:checked').val();
在inputsObject中,如果存在对(name=>value)。尝试console.log(attributeVariables)而不是console.log(thing1+“,”+thing2),因为在第一个示例中,这是您分配值的对象。您从不创建名为thing1或thing2的变量,因此它只会使未定义的变量生效。请尝试console.log(attributeVariables.join()
)instead@jonmrich不,您正在替换每个中原始数组中的值。不,您没有!首先,这些变量不存在,对50多个项目执行单个变量是疯狂的。使用对象而不是用例是什么?可以使用更简单的方法来实现这一切,具体取决于您试图使用它做什么alltry console.log(attributeVariables)而不是console.log(thing1+“,“+thing2”),因为在第一个示例中,这是您分配值的对象。您从不创建名为thing1或thing2的变量,因此它只会使未定义的变量生效。请尝试console.log(attributeVariables.join()
)instead@jonmrich不,您正在替换每个中原始数组中的值。不,您没有!首先,这些变量不存在,对50多个项目执行单个变量是疯狂的。使用对象而不是用例是什么?如果输入名称与变量名称相同,那么有没有一种方法可以修改它,用每个输入的值来更新变量?但是,看,你有一个对象inputsObject,里面有{thing1:on,thing2:off}
然后您就可以轻松地从inputsObject访问对象的每个键,该键的名称等于输入名称。我知道,但我试过一些方法,但都做不好。我知道我需要一个每个
,但在那之后就很困难了。有了这个变量,你可以通过inputsObject访问所有检查过的输入。inputName
有没有办法修改它,在输入名称与变量名称相同的情况下,用每个输入的值更新变量?但是你有一个对象inputsObject,在你的内部有{thing1:on,thing2:off}
,然后你可以很容易地从inputsObject访问对象的每个键,这个键的名称等于InputName。我知道,但我试过一些方法,但都做不好。我知道我需要一个每个,但在那之后我就很挣扎了