我创建了一个测验,并尝试遍历HTML表单(单选按钮)中的元素,如果已选中,则将按钮的值添加到字符串中。但是,添加到字符串中的第一件事始终是“未定义的”,我不知道为什么。请注意,我是Java语言的新手。
我尝试过更改for循环的方式-使用(inputs.length+1)
,或将i
设置为1
而不是0
。但是,这似乎不是问题。我还尝试过将值添加到字符串之前检查该值是否未定义(如下所示),但是它仍然导致字符串的第一部分显示“ undefined”。
var chosen_result; //the string to add values to
var temp;
var inputs = document.forms["townquiz"].elements;
for (i = 0; i < (inputs.length-1); i++) {
temp = inputs[i];
if((temp.checked) && !(temp.value == "undefined")){
chosen_result += temp.value;
实际结果:undefinedABC
预期结果:ABC
其中A,B和C是HTML表单中的单选按钮的值。
答案 0 :(得分:3)
关于字符串,+=
运算符将当前值和新值连接在一起。 chosen_result
之所以为undefined
,是因为它已被声明但未初始化。只需将chosen_result
设置为空字符串:
var chosen_result = ""; //the string to add values to
var temp;
var inputs = document.forms["townquiz"].elements;
for (i = 0; i < (inputs.length-1); i++) {
temp = inputs[i];
if((temp.checked) && !(temp.value == "undefined")){
chosen_result += temp.value;
答案 1 :(得分:2)
为chosen_result
分配一个空字符串,例如chosen_result = ''
,以免在附加到该值时成为undefined
。
答案 2 :(得分:1)
JavaScript中添加字符串可能有些奇怪,因为它使用coercion。声明chosen_result
时,没有将其设置为任何值,因此其类型为undefined
。当您将字符串添加到undefined
时,JavaScript会将其转换为字符串,然后将其连接起来。 String(undefined)
是"undefined"
,所以,您真正在做的是
"undefined" += "ABC"
要解决此问题,请将chosen_result
初始化为空字符串:
var chosen_result = ""
这样,它不会被强制。