如何使用复选框打印所选值并打印它们而不会得到未定义的值?

时间:2017-02-09 14:24:14

标签: javascript html checkbox

我在这里有html和javascript这些代码。我试图使用javascript获得此结果。例如,Extras: Candy, Ice CreamExtras: Candy, Chocolate并且在两者之间或某处未获取未定义的值。我尝试过多个var,但是我得到了未定义的值。如果我只选择了一个,它只打印一个,而不打印其余的。

getCheckboxvalue() {
    var msg2 = "";

if (extras[0].checked) {
msg2 = (msg2 + "Candy");
} else if (extras[1].checked) {
msg2 = (msg2 + "Chocolate");
} else if (extras[2].checked) {
msg2 = (msg2 + "Ice Cream");
}
var message = "Extras: " + msg2;
document.getElementsByClassName("gettext")[0].innerHTML = message;
}
<form name="elem" autocomplete="on">
  <input type="checkbox" name="extras">Candy
  <br>
  <input type="checkbox" name="extras">Chocolate
  <br>
  <input type="checkbox" name="extras">Ice Cream
  <input type="button" onClick="getCheckboxvalue()" value="Get Order!">
  <br>
  <br><span class="gettext"></span>
</form>

3 个答案:

答案 0 :(得分:1)

&#13;
&#13;
function getCheckboxvalue() {
    var msg2=[];
for (var i=0;i< document.getElementsByName("extras").length;i++){
   if ( document.getElementsByName("extras")[i].checked) {
    msg2.push(document.getElementsByName("extras")[i].value);
    }
}
  
  document.getElementsByClassName("gettext")[0].innerHTML ="Extras :"+ msg2.toString();
}
&#13;
<form name="elem" autocomplete="on">
  <input type="checkbox" name="extras" value="Candy">Candy
  <br>
  <input type="checkbox" name="extras" value="Chocolate">Chocolate
  <br>
  <input type="checkbox" name="extras" value="Ice Cream">Ice Cream
  <input type="button" onClick="getCheckboxvalue();" value="Get Order!">
  <br>
  <br><span class="gettext"></span>
</form>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

将字符串值设置为msg2,如下所示:

var msg2 = "";

然后在你的if语句中将其设为+=而不是=

答案 2 :(得分:0)

首先,是的,你应该设置你的msg2 var,就像里克说的那样。 然后,你正在使用 else if 条件,如果你的代码进入第一个 if ,它将退出循环而不进入另一个 else if else ,这就是为什么你只能在变量中放入一个值 。 像这样的东西这样的工作

if (extras[0].checked) {
    msg2 = (msg2 + "Candy");
}
if (extras[1].checked) {
    msg2 = (msg2 + "Chocolate");
}