簡體   English   中英

如何按選擇的順序獲取復選框的值?

[英]How to get the value of checkboxes in the order they are selected?

希望您能幫到我:)我有這段代碼來獲取復選框的值:

 function check() {
     var Input = Array.prototype.slice.call(document.querySelectorAll(".checkboxes:checked")).map(function(el) {
         return el.value;

     }).join(',')

     document.getElementById('output2').innerHTML = Input;
     return false;
 }

我希望輸出按我選擇復選框的順序。 有沒有辦法使它們順序正確?

您可以更改為其設置時間戳內嵌評論

 var allCheckboxes = document.querySelectorAll("input[type='checkbox'][data-name]"); //bind the event to set time value on change [...allCheckboxes].forEach(s => s.addEventListener("change", function(e) { e.currentTarget.timeval = new Date().getTime(); })); document.querySelector("button").addEventListener("click", check); function check() { var output = [...allCheckboxes] .filter(s => s.checked) // filter out non-checked .sort((a, b) => a.timeval - b.timeval) //sort by timeval .map(s => s.getAttribute("data-name")).join(","); //fetch only data-name for display document.getElementById('output').innerHTML = output; } 
 Check 1 <input type="checkbox" data-name="check1"> <br/> Check 2 <input type="checkbox" data-name="check2"> <br/> Check 3 <input type="checkbox" data-name="check3"> <br/> Check 4 <input type="checkbox" data-name="check4"> <br/> Check 5 <input type="checkbox" data-name="check5"> <br/> <button>check</button> <div id="output"></div> 

您可以設置一個數組並保存選定的值。

您可以通過為每個chcekbox提供一個事件偵聽器來實現此目的。

在事件偵聽器中,添加一個if來驗證單擊事件是否已選中,然后將其添加到列表/數組中。

希望這可以幫助 :)

 var checks = document.querySelectorAll('input[type=checkbox]'); var order = []; for(var i=0; i<checks.length;i++){ checks[i].addEventListener("click", function(){ if(this.checked) order.push(this.value); }) } 
 <input type="checkbox" value="A">A <input type="checkbox" value="B">B <input type="checkbox" value="C">C <input type="checkbox" value="D">D <br> <button onclick="console.log('Order: '+order)">Check order</button> 

您可以向每個部分添加一個data-id屬性。 並且,當您單擊一個復選框時,將每個復選框的屬性值更改為序列號。 為此,使用jquery更容易

您可以使用“ Set並根據復選框的選中狀態添加或刪除。

Set以插入順序返回項目。

 var checks = document.querySelectorAll('input[type=checkbox]'), order = new Set, i for (i = 0; i < checks.length; i++) { checks[i].addEventListener("click", function() { order[['delete', 'add'][+this.checked]](this.value); }); } 
 <input type="checkbox" value="A">A <input type="checkbox" value="B">B <input type="checkbox" value="C">C <input type="checkbox" value="D">D <br> <button onclick="console.log('Order: '+[...order])">Check order</button> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM