2015-10-05 92 views
-2

我嘗試複選框ID添加到使用的JavaScript語言的數組,這是我的代碼:爲什麼不能將字符串添加到JavaScript數組中?

function checkBoxClick(e) { 
    alert("a"); 
    var arr = new Array(); 
    var rule = new Array(); 
    var chkId = $(e).attr("id"); 
    var tempId = ""; 
    var tempElementId = ""; 
    $("input[class='singlechk']").each(function() { 
     var elementId = $(this).attr("id"); 
     var larr = $(this).attr("id").split('-'); 
     tempElementId = elementId; 
     if (tempId == "") { 
      tempId = larr[0]; 
     } else { 
      if (tempId != larr[0]) { 
       rule.push(arr); 
       arr = []; 
       arr.push(tempElementId); 
      } else { 
       arr.push(tempElementId); 
      } 
     } 
    }); 
} 

我每次每複選框,其中類是「singlechk」。將id推入數組arr中,但每次都添加最後一個元素,並且第一個元素不能推入數組中。

這是我的html代碼:

<div class="container"> 
    <h3 id="question_1">飯菜質量 
     <span>(單選)</span> 
    </h3> 
    <br /> 
    <input name="wjdc" class="singlechk" id="item_1-1" type="checkbox" onclick="checkBoxClick(this)" /> 
    <span>一般</span> 
    <br /> 
    <input name="wjdc" class="singlechk" id="item_1-2" type="checkbox" onclick="checkBoxClick(this)" /> 
    <span>很好</span> 
    <h3 id="question_2">就餐環境 
     <span>(單選)</span> 
    </h3> 
    <br /> 
    <input name="wjdc" class="singlechk" id="item_2-3" type="checkbox" onclick="checkBoxClick(this)" /> 
    <span>很好</span> 
    <br /> 
    <input name="wjdc" class="singlechk" id="item_2-4" type="checkbox" onclick="checkBoxClick(this)" /> 
    <span>一般</span> 
</div> 

這是正確的結果可能是:

var rule = [["item_1-1", "item_1-2"], ["item_2-3", "item_2-4"]]; 

我的問題是:爲什麼陣列跳投輸出

var rule = [["item_1-2"], ["item_2-4"]]; 
+0

? – Satpal

+0

我想清空舊數組 – Dolphin

回答

2

該陣列在else條件中重置,然後編輯一個新項目push。所以,在循環結束後,數組將只包含最後一個元素。

刪除

arr = []; 

的另一件事是

rule.push(arr); 

將整個陣列推作爲rule陣列內的元件。

要將數組元素添加到另一個數組中,請使用concat。 `;

rule.concat(arr); 
+0

重置之前,我已經將數組移動到另一個數組規則 – Dolphin

+0

@Dolphin檢查更新的答案 – Tushar

1

可你爲什麼要使用`ARR = []嘗試像

function checkBoxClick(e) { 
 
    var rule = new Array(), 
 
    tmp = {}; 
 
    $("input.singlechk:checked").each(function() { 
 
    var elementId = this.id; 
 
    var larr = elementId.split('-'); 
 
    if (!tmp[larr[0]]) { 
 
     tmp[larr[0]] = []; 
 
     rule.push(tmp[larr[0]]); 
 
    } 
 
    tmp[larr[0]].push(elementId); 
 
    }); 
 
    snippet.log(JSON.stringify(rule)) 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 --> 
 
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script> 
 

 
<div class="container"> 
 
    <h3 id="question_1">飯菜質量<span>(單選)</span></h3> 
 
    <br /> 
 
    <input name="wjdc" class="singlechk" id="item_1-1" type="checkbox" onclick="checkBoxClick(this)" /> 
 
    <span>一般</span> 
 
    <br /> 
 
    <input name="wjdc" class="singlechk" id="item_1-2" type="checkbox" onclick="checkBoxClick(this)" /> 
 
    <span>很好</span> 
 
    <h3 id="question_2">就餐環境<span>(單選)</span></h3> 
 
    <br /> 
 
    <input name="wjdc" class="singlechk" id="item_2-3" type="checkbox" onclick="checkBoxClick(this)" /> 
 
    <span>很好</span> 
 
    <br /> 
 
    <input name="wjdc" class="singlechk" id="item_2-4" type="checkbox" onclick="checkBoxClick(this)" /> 
 
    <span>一般</span> 
 
</div>

相關問題