遍历数组时,第一个值始终为“未定义”

时间:2019-07-15 19:30:46

标签: javascript html css

我创建了一个测验,并尝试遍历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表单中的单选按钮的值。

3 个答案:

答案 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 = ""

这样,它不会被强制。