簡體   English   中英

當 checkbox == true 時 Javascript 增加 [i]

[英]Javascript increase [i] when checkbox == true

我想從選中的復選框中為 div 提供 ID。 例如,我有 5 個復選框,每次未選中復選框時,循環都應將所有即將選中的復選框增加 1。

 function saveData() { for (let i = 0; i <= 4; i++) { document.getElementsByClassName('cb')[i].id = 'id' +i; let id_active = document.getElementById('id' + i); if (id_active.checked === true) { let div_id = document.getElementsByClassName('div')[i].id = 'div' + i; document.getElementsByClassName('div')[i].innerText = div_id; } if (id_active.checked === false) { i += 1; } } }
 <input type="checkbox" class="cb" checked> <input type="checkbox" class="cb" checked> <input type="checkbox" class="cb"> <input type="checkbox" class="cb" checked=""> <input type="checkbox" class="cb"> <br> <br> <button onclick="saveData()">Check</button> <div class="div"></div> <div class="div"></div> <div class="div"></div>

所以在這種情況下,第三個 div 應該得到 id="4" 但循環在未選中復選框后停止。 如何為所有即將到來的 [i] 增加 i + 1 並且在第一個checkbox.checked === false之后不停止循環? 結果應如下所示:

在此處輸入圖片說明

這是我認為你想要的結果。 你需要第二個計數器。

function saveData() {
        let j=0;
        for (let i = 0; i <= 4; i++) {
            console.log(i);
            document.getElementsByClassName('cb')[i].id = 'cb'+ i;
            let id_active = document.getElementById('cb' + i);
            if (id_active.checked === true) {
                let div_id = document.getElementsByClassName('cb')[i].id;
                console.log(div_id);
                document.getElementsByClassName('div')[j].innerText = div_id;
                j+=1;
                
            }
        }
    }    

@SaymoinSam 你能給我舉個例子,我需要什么額外的變量?

我的意思是這樣的,請注意我已經將您的代碼重構為更好更干凈的代碼

 function saveData() { let divs = document.querySelectorAll(".div"), index = 0; document.querySelectorAll(".cb").forEach(function(input, ind) { if(input.checked) { divs[index].id = divs[index++].innerText = `div${ind}`; } }); }
 <input type="checkbox" class="cb" checked> <input type="checkbox" class="cb" checked> <input type="checkbox" class="cb"> <input type="checkbox" class="cb" checked=""> <input type="checkbox" class="cb"> <br> <br> <button onclick="saveData()">Check</button> <div class="div"></div> <div class="div"></div> <div class="div"></div>

 function saveData() { let divs = $('.div'); let checkboxes = $('.cb'); let j = 0; $(divs).removeAttr('id',""); $(checkboxes).each(function(i){ if($(this).is(':checked') && $(divs).get(j)){ $(divs[j]).attr('id','div'+i); j++; } }); $(divs).each(function(i){ $(this).text('div' + i + ' has id: ' + $(this).attr('id')); }); }
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"> </script> <input type="checkbox" class="cb" checked> <input type="checkbox" class="cb" checked> <input type="checkbox" class="cb"> <input type="checkbox" class="cb" checked=""> <input type="checkbox" class="cb"> <br> <br> <button onclick="saveData()">Check</button> <div class="div"></div> <div class="div"></div> <div class="div"></div>

暫無
暫無

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

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