在这段代码中,我逐行写出textarea的每个单词,用空格分隔,但最后一个单词undefined
出现,我不知道为什么
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;
}
&#13;
<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>
&#13;
答案 0 :(得分:0)
你的循环过了一个值。在最后一个循环执行中j <= c.length
,当j = c.length时,您尝试在c
访问c.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>"
}
}
答案 1 :(得分:0)
在你的第二个for循环中,你使用小于或等于而不是小于。因此,您还尝试在c.length处打印索引,该索引未定义。相反,你应该写:
for (var j = 0; j < c.length; j++) {
if (c[j] != ' ') {
conteudo += c[j];
}else {
conteudo += "<br>"
}
}
这是fencepost错误。