我如何在函数中使用for循环的变量

时间:2018-03-05 15:36:04

标签: javascript jquery html

我在for循环中有一个简单的函数。我想当我选择其中一个select元素时,会显示一个警告并告诉我我选择的值。 但for循环的参数i并不起作用。 问题是什么?

<select id="s1">
<option value="choose">choose</option>
<option vaue='1'>1</option>
<option vaue='2'>2</option>
</select>
<select id="s2">
<option value="choose">choose</option>
<option vaue='1'>1</option>
<option vaue='2'>2</option>
</select>

<script src="jquery-1.11.3.min.js"></script>
<script>

for(i=1; i<=2; i++)
{
$("#s"+i).change(function()
{
    var sValue = $("#s"+i).val();
    alert(sValue);
});
}
</script>

3 个答案:

答案 0 :(得分:1)

试试他的:

   $('select').on('change', function(){
       alert($(this).val());
    });

答案 1 :(得分:0)

你可以试试这个:

&#13;
&#13;
for (i = 1; i <= 2; i++) {
  $("#s" + i).change(function() {
    var sValue = this.value || 0;
    alert(sValue);
  });
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="s1">
<option value="choose">choose</option>
<option vaue='1'>1</option>
<option vaue='2'>2</option>
</select>
<select id="s2">
<option value="choose">choose</option>
<option vaue='1'>1</option>
<option vaue='2'>2</option>
</select>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

另一种方法是使用语句let声明该变量以使其正常工作。

  

let语句声明一个块作用域局部变量,可选择将其初始化为一个值。

&#13;
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="s1">
<option value="choose">choose</option>
<option vaue='1'>1</option>
<option vaue='2'>2</option>
</select>
<select id="s2">
<option value="choose">choose</option>
<option vaue='1'>1</option>
<option vaue='2'>2</option>
</select>


<script>
  for (let i = 1; i <= 2; i++) {
    $("#s" + i).change(function() {
      var sValue = $("#s" + i).val();
      alert(sValue);
    });
  }
</script>
&#13;
&#13;
&#13;

或者,只需使用this上下文:

&#13;
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="s1">
<option value="choose">choose</option>
<option vaue='1'>1</option>
<option vaue='2'>2</option>
</select>
<select id="s2">
<option value="choose">choose</option>
<option vaue='1'>1</option>
<option vaue='2'>2</option>
</select>


<script>
  for (let i = 1; i <= 2; i++) {
    $("#s" + i).change(function() {
      var sValue = $(this).val(); // <--- HERE
      alert(sValue);
    });
  }
</script>
&#13;
&#13;
&#13;