如何使用复选框创建字符串



我正在尝试获得一个弦乐的结果,即"选择A,b,c"。

但是,使用以下代码,如果我检查了所有三个框,我只能生成:选择a,选择A,B,该人选择了A,B,C,

我不希望生成的笔记有3个单独的行。

        var notes = "";
        var reason = "";
        for (j=0; j<document.reason.reasonqst.length; j++){
            if (document.reason.reasonqst[j].checked==true){
                notes += "The person selected";
                if (j==0)
                    reason += "A, ";
                if (j==1)
                    reason += "B, ";
                if (j==2)
                    reason += "C,";
                notes += "" + reason + "r";
            }
        }

    <form id="reason" name="reason" method="post" action="">
    <table>
        <tr>        
            <td>BPC: <input onclick="ds_sh(this);" name="reason" id="reason" readonly="readonly" style="cursor: text" /><br /></td>
        </tr>
        <tr>
            <td style="width: 120px;"><input type="checkbox" name="reasonqst" id="reasonqst" />A</td>
            <td style="width: 120px;"><input type="checkbox" name="reasonqst" id="reasonqst" />B</td>
            <td style="width: 120px;"><input type="checkbox" name="reasonqst" id="reasonqst" />C</td>
        </TR>
    </table>
         </form>

移动注释变量外部循环并附加单个值

notes = "The person selected";
for (j=0; j<document.reason.reasonqst.length; j++){
            if (document.reason.reasonqst[j].checked==true){
                if (j==0)
                    reason += " 1";
                if (j==1)
                    reason += ", 2 ";
                if (j==2)
                    reason += ", 3";
            }
        }
notes += "" + reason + "r";

我建议您一个更轻的版本,您可以获利您的变量和最终值几乎相同,其差异仅具有1个差异值:

    var reason = "";
    let personsSelected = [];
    for (j=0; j<document.reason.reasonqst.length; j++){
        if (document.reason.reasonqst[j].checked==true){
            personsSelected.push(j+1);
        }
    }
    let notes = `The person selected ${personsSelected.join(',')}` + "r";