var attributeVariables = ['thing1', 'thing2'];
$.each(attributeVariables, function(index, val) {
attributeVariables[index] = $('input[name='+attributeVariables[index]+']:checked').val();
});
console.log(thing1+" , "+thing2)
在控制台中,这会产生undefined , undefined
但是,如果我运行这些,我会得到thing1
和thing2
thing1 = $('input[name=thing1]:checked').val();
thing2 = $('input[name=thing2]:checked').val();
我有一堆其他变量,结构相同,以获得它们的价值。我试图避免将这些线条写成50次以上。我知道有更好的方法,我认为我的第一个声明就是这样。有人能告诉我为什么这不起作用吗?
更新:
我要做的就是根据我thing1
中的逻辑更新这些已存在的变量(thing2
,each
)...不要将所有内容存储在数组中。
更新2:
重申另一种方式......我没有以任何具体方式结婚。这就是我需要的:我有大约30个无线电选择器,每个选择器绑定到一个不同的变量。不是为30个不同的变量(thing2 = $('input[name=thing2]:checked').val();
)写出30次,我认为有一个捷径。我列出了我想要更新的所有变量(基于无线电状态)并运行一个each
答案 0 :(得分:1)
正如评论所述,你不是console.log()
- 正确的事情。否则你的代码几乎没问题。我认为您可以直接在val
中使用each
代替attributeVariables[index]
。
然后您可以执行条件检查,因为val()
未选中复选框会返回undefined
var attributeVariables = ['thing1', 'thing2'];
$.each(attributeVariables, function(index, val) {
attributeVariables[index] = {
name: val,
checked: $('input[name=' + val + ']:checked').val() ? true : false
};
});
console.log(attributeVariables);
console.log('--------------------------------');
console.log('Radio Buttons Test Results');
var radios = ['thing3', 'thing4', 'thing5', 'thing6'];
$.each(radios, function(idx, name) {
var radioValues = [];
$.each($('input[name=' + name + ']'), function(i, radio) {
radioValues.push({index: i, checked: radio.checked});
});
radios[idx] = {
name: name,
radioValues: radioValues
};
});
console.log(radios);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="thing1" checked>
<input type="checkbox" name="thing2">
<br/>
<input type="radio" name="thing3">
<input type="radio" name="thing3" checked>
<input type="radio" name="thing3">
<br/>
<input type="radio" name="thing4">
<input type="radio" name="thing4">
<input type="radio" name="thing4" checked>
<br/>
<input type="radio" name="thing5" checked>
<br/>
<input type="radio" name="thing6">
答案 1 :(得分:1)
试试这个。它可能有用......
var inputsObject = {};
$("input:checked").each(function() {
inputsObject[$(this).attr("name")] = $(this).val()
})
console.log(inputsObject)
在inputsObject中,如果它们存在,你将拥有对(name =&gt; value)。