Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从多个输入中获取值,而无需重新编写相同的代码_Javascript_Jquery_Arrays - Fatal编程技术网

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。我知道,但我试过一些方法,但都做不好。我知道我需要一个
每个
,但在那之后我就很挣扎了