简体   繁体   English

如何修复循环以检查是否选中了复选框,以及是否将值附加到字符串?

[英]How to fix loop to check if checkbox is checked, and if so append value to string?

Can't get loop to spit out a string of the values in checked checkboxes. 无法循环以在选中的复选框中吐出一串值。

Basic Javascript. 基本的Javascript。

I've tried to follow various other stackoverflow posts to no avail. 我试图遵循各种其他stackoverflow帖子都无济于事。 This and This seemed to be what was closest to what I'm trying to make work. 似乎与我正在尝试的工作最接近。

The HTML is just a row of HTML只是一行

<div class="help-days">MON<br><input type="checkbox" id="d0-field" value="Monday" aria-describedby="avail-help"></div>

I've tried 我试过了

var element = document.getElementsByClassName('help-days');
for (var i = 0; i <= 6; i++) {
    if (element[i].checked) {
        var day = $('#d' + i + '-field').val();
        days = days + ' ' + day;
    }
}

and

for (var i = 0; i <= 6; i++) {
    var element = document.getElementById('#d' + i + '-field')
    if (element[i].checked) {
        var day = $('#d' + i + '-field').val();
        days = days + ' ' + day;
    }
}

Below example outputs Monday Tuesday Wednesday Thursday Friday Saturday Sunday which leads me to believe there's something about using HTMLCollection and for loops & checking checkboxes that I'm not quite grasping? 下面的示例输出Monday Tuesday Wednesday Thursday Friday Saturday Sunday ,这使我相信关于使用HTMLCollection以及关于循环和检查复选框的某些事情我不太了解?

for (var i = 0; i <= 6; i++) {
    var day = $('#d' + i + '-field').val();
    if (day) {
        days = days + ' ' + day;
    }
}

I'm trying to create a string that appends a checkbox 'value' to the string, if the checkbox is checked. 我正在尝试创建一个字符串,如果该复选框已选中,则在该字符串后附加一个复选框“值”。

Any help appreciated! 任何帮助表示赞赏!

No need to include the # character when you use document.getElementById . 使用document.getElementById时无需包含#字符。 The # character is used with JQuery #字符与JQuery一起使用

And you don't need to write element[i].checked , only element.checked because element is already a reference to your checkbox element. 而且您不需要编写element[i].checked ,只需编写element.checked因为element已经是对您的checkbox元素的引用。

for (var i = 0; i < 6; i++) {
  var element = document.getElementById('d' + i + '-field')

  if (element.checked) {
    var day = element.value
    days += ' ' + day;
  }
}

document.getElementsByClassName('help-days'); this will return the list of div s, and they don't have a checked property, you'll need to select the checkboxes inside of them : 这将返回div的列表,并且它们没有checked属性,您需要选中其中的复选框:

for (var i = 0; i < 2; i++) {
    var checkbox = element[i].childNodes[2];

    if (checkbox.checked) {
        var day = $('#d' + i + '-field').val();
        days = days + ' ' + day;
    }
}

 var days = ''; for (var i = 0; i < 3; i++) { var element = document.getElementById('d' + i + '-field') if (element.checked) { var day = element.value days += ' ' + day; } } console.log(days) 
 <div class="help-days">MON<br><input type="checkbox" id="d0-field" value="Monday" aria-describedby="avail-help" checked></div> <div class="help-days">TUE<br><input type="checkbox" id="d1-field" value="Tuesday" aria-describedby="avail-help" checked></div> <div class="help-days">WED<br><input type="checkbox" id="d2-field" value="Wednesday" aria-describedby="avail-help"></div> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM