如何使用each()

时间:2017-03-28 09:12:10

标签: javascript jquery

我想要一个简单的逻辑 - 每个循环运行输入无线电和两个值,即无线电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

6 个答案:

答案 0 :(得分:2)

您遇到的问题是您在每次迭代中重新定义mf的值,因此它只在循环结束时保留最终值。

要解决此问题,请使用push()向元素添加元素:

&#13;
&#13;
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;
&#13;
&#13;

另请注意,实现所需的更好方法是使用map()直接从jQuery对象创建数组:

&#13;
&#13;
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;
&#13;
&#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)

&#13;
&#13;
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;
&#13;
&#13;

使用.push()

  

push()方法将新项添加到数组的末尾,并返回新的长度。

答案 4 :(得分:0)

我认为这对你有用...... !!

&#13;
&#13;
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;
&#13;
&#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);        
     }
  });

DEMO