2016-09-20 15 views
0

在这段代码我写一行文本区域的每一个字,用空格分开的线,但在最后一个字undefined出现,我不知道为什么“未定义”意外的数组循环+的charAt

window.onload = function() { 
 
    var btn2 = document.getElementById("separar"); 
 

 
    btn2.addEventListener("click", function() { 
 
    palavrasSeparadas(); 
 
    }, false); 
 
} 
 

 
var c = new Array(); 
 

 
function palavrasSeparadas() { 
 
    var t2 = document.getElementById("texto").value; 
 
    for (var i = 0; i < t2.length; i++) { 
 
    //charAt retorna o caracter daquela posição 
 
    c[i] = t2.charAt(i); 
 
    } 
 

 
    var conteudo = ""; 
 
    for (var j = 0; j <= c.length; j++) { 
 
    if (c[j] != ' ') { 
 
     conteudo += c[j]; 
 
    } else { 
 
     conteudo += "<br>" 
 
    } 
 
    } 
 

 
    document.getElementById("msgS").innerHTML = conteudo; 
 
}
<form id="form1" name="form1" method="post" action=""> 
 
    <textarea id="texto" name="texto"></textarea> 
 
    <br> 
 
    <input type="button" id="separar" name="separar" value="Separação"> 
 
</form> 
 
<br> 
 
<div id="msgS"></div> 
 
<br>

+1

变化'Ĵ<= c.length'到'Ĵ mplungjan

回答

0

你的环路变得太过分了。在最后循环执行中使用j <= c.length时,当j = c.length时,您尝试访问cc.length。但是当数组索引从0开始时,您的数组长度只有c.length-1。在循环中使用j < c.length

for (var j = 0; j < c.length; j++) { 
     if (c[j] != ' ') { 
      conteudo += c[j]; 
     }else { 
      conteudo += "<br>" 
     } 
    } 
+0

感谢您的帮助 –

0

在你的第二个循环中,你使用小于或等于而不是小于。因此,您也试图在未定义的c.length处打印索引。相反,你应该写:

for (var j = 0; j < c.length; j++) { 
    if (c[j] != ' ') { 
     conteudo += c[j]; 
    }else { 
     conteudo += "<br>" 
    } 

}

这是一个栅栏柱的错误。

+1

感谢您的帮助 –