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
最佳答案
如评论中所述,您没有正确地做事。否则,您的代码几乎可以正常运行。我认为您可以直接在console.log()
中使用val
代替each
。
然后,您可以执行条件检查,因为未选中复选框的attributeVariables[index]
返回val()
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">