Javascript循环遍历事件中的数组

时间:2017-03-10 03:43:49

标签: javascript jquery arrays loops

我正在尝试干掉这段代码,特别是在if / else语句中手动输入elems选项而不是我要循环(或递增数字)。我尝试过使用各种循环,但无法在.change()事件中使用它。

var radioSelect = $("input[type='radio']");
var elems = ["q1","q2","q3","q4","q5","q6"];

radioSelect.change(function () {

    // grab the name and value selected radio
    // set localstorage
    var linkName = $(this).attr('name');
    var value = $(this).val();
    localStorage.setItem(linkName, value);

    // I am trying to loop/increment both through the elements
    // and also through the #response[x] divs.
    if (link_name === elems[1]) 
    {
        $("#response1").html(localStorage.getItem(linkName));
    } 
    else if (link_name === elems[2]) 
    {
        $("#response2").html(localStorage.getItem(linkName));
    }  
    else if (link_name === elems[3]) {
        $("#response3").html(localStorage.getItem(linkName));
    }
});

基本HTML          

<input type="radio" name="q2" value="Yes">
<input type="radio" name="q2" value="No">

2 个答案:

答案 0 :(得分:1)

您可以按if/else循环替换for,如下所示:

var radioSelect = $("input[type='radio']");
var elems = ["q1","q2","q3","q4","q5","q6"];

radioSelect.change(function () {

    // grab the name and value selected radio
    // set localstorage
    var linkName = $(this).attr('name');
    var value = $(this).val();
    localStorage.setItem(linkName, value);

    // I am trying to loop/increment both through the elements
    // and also through the #response[x] divs.
    for( var i=1; i<=elem.length; i++){
        if (link_name === elems[i]){
            $("#response"+i).html(localStorage.getItem(linkName));
            break;
        } 
    }
});

答案 1 :(得分:0)

elems.forEach(function(elem){
  if (linkName === elem) {
   $("#response" + elem.substring(1)).html(localStorage.getItem(linkName));
  }
})