我想要一个简单的逻辑 - 每个循环运行输入无线电和两个值,即无线电btton的值和单选按钮的名称 现在,警报窗口仅显示最后一个元素的结果 我希望所有的数组结果都应该存储在mf中 名称是动态提交的
$("input[type=radio]:checked").each(function() {
var1 = $(this).val();
var2 = $(this).attr("name");
mf = [var2 + "_" + var1];
});
alert(mf);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="radio" name="r_1q_1" value="1" />A
<input type="radio" name="r_1q_1" value="1" />B
<input type="radio" name="r_1q_1" value="1" />B
<input type="radio" name="r_1q_1" value="1" />C
答案 0 :(得分:2)
您遇到的问题是您在每次迭代中重新定义mf
的值,因此它只在循环结束时保留最终值。
要解决此问题,请使用push()
向元素添加元素:
var mf = [];
$("input[type=radio]:checked").each(function() {
var1 = $(this).val();
var2 = $(this).attr("name");
mf.push(var2 + "_" + var1);
});
console.log(mf);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="radio" name="r_1q_1" value="1" />A
<input type="radio" name="r_1q_2" value="2" checked="true" />B
<input type="radio" name="r_1q_3" value="3" />B
<input type="radio" name="r_1q_4" value="4" checked="true" />C
&#13;
另请注意,实现所需的更好方法是使用map()
直接从jQuery对象创建数组:
var mf = $("input[type=radio]:checked").map(function() {
return this.name + "_" + this.value;
}).get();
console.log(mf);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="radio" name="r_1q_1" value="1" />A
<input type="radio" name="r_1q_2" value="2" checked="true" />B
<input type="radio" name="r_1q_3" value="3" />B
<input type="radio" name="r_1q_4" value="4" checked="true" />C
&#13;
答案 1 :(得分:1)
你重新定义mf而不是添加东西。您应该执行以下操作:
var mf = [];
$( "input[type=radio]:checked" ).each(function(){
var1 = $(this).val();
var2 = $(this).attr("name");
mf.push(var2+"_"+var1);
});
alert(mf) ;
首先,将变量mf声明为数组,然后在每个循环中使用.push()
函数将数据推送到它。
答案 2 :(得分:1)
有一个名为.push()
(Docs)的Javascript函数。
所以你要做的是在mf
之外定义.each()
数组,然后对于循环的每次迭代,将结果推送到mf
数组。
var mf = [];
$( "input[type=radio]:checked" ).each(function(){
var1 = $(this).val();
var2 = $(this).attr("name");
mf.push(var2+"_"+var1);
});
// mf = ["name1_val1", "name2_val2"]
答案 3 :(得分:0)
var mf = [];
$("input[type=radio]:checked").each(function() {
var1 = $(this).val();
var2 = $(this).attr("name");
mf.push(var1)
mf.push(var2)
});
console.log(mf);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="radio" name="r_1q_1" value="1" checked/>A
<input type="radio" name="r_1q_1" value="1" />B
<input type="radio" name="r_1q_1" value="1" />B
<input type="radio" name="r_1q_1" value="1" />C
&#13;
使用.push()
push()方法将新项添加到数组的末尾,并返回新的长度。
答案 4 :(得分:0)
我认为这对你有用...... !!
var mf = [];
$(document).on('click','input[type=radio]',function(){
if($(this).is(":checked")){
mf.push($(this).val()+"_"+$(this).attr("name")) ;
}
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="radio" name="r_1q_1" value="1" />A
<input type="radio" name="r_1q_1" value="2" />B
<input type="radio" name="r_1q_1" value="3" />B
<input type="radio" name="r_1q_1" value="4" />C
&#13;
答案 5 :(得分:-1)
var studentList =[];
var emailAddresses=[];
$('table tr').each(function (i, row) {
var tr =$(row);
var chk= tr.find('input[type="checkbox"]').is(':checked')
console.log(chk)
if(chk){
emailAddresses.push(tr.find('.email').text())
studentList.push(tr.find('input[type="checkbox"]').prop('id'))
console.log(emailAddresses);
console.log(studentList);
}
});