-1

我有一个文本框,其中将粘贴一大块文本。

然后我将文本解析为一个数组,删除空格。我需要从某些数组元素中提取数据并将它们放入单独的变量中,以便生成更清晰、格式化的输出。

问题是注意似乎是从数组传递到我的变量中的。我玩弄了一点,数组被正确填充,但元素没有将字符串传递给变量。

HTML:

<p>Contact Name: <b id='contactNameOutput'></b></p>

JavaScript:

function generateOutputfvoc() {
    var inputArr = document.getElementById('inputBox').value.split(/[\s]/);
    document.getElementById('contactNameOutput').innerHTML = inputArr[0];
}
4

1 回答 1

1

这里发生了很多事情,很难理解您为什么要这样做。我的假设inputBox是用户在其中写入内容的文本区域或输入字段。

好的,所以你在空格上分割那个字符串,例如字符串

敏捷的棕色狐狸

将产生一个如下所示的数组:

inputArr = ["The", "quick", "brown", "fox"]

现在在您的 for 循环中,您正在迭代这个数组,从 0 开始并递增直到到达数组的末尾,这没什么奇怪的。

但是在第一次迭代中,在您拥有的 if 子句中,您尝试使用负值访问数组,记住iis 0,这会导致未定义的值,也在您尝试的 if 子句的最后部分访问i+1好当i它的最后一个值时会发生什么?!你猜对了另一个未定义!稍后循环将访问您已经经历过的旧值,老实说,我无法弄清楚您要完成什么。

你所有的 if 语句真的是一团糟,特别是如果你要在那个循环中执行它们。我的猜测是你认为你需要一个 for 循环,而实际上你不需要。

你所拥有的是一个包含文本区域中单词的数组,如果你知道你期望的顺序,(你真的知道用户会在那个文本区域中输入什么吗?),那么你可以直接访问这些单词,因为您将知道数组中每个项目的索引。否则,将其重写为更简单的东西,始终尽量保持简单。

另外,为什么不抬头看refactoring呢?!

编辑

我认为您现在遇到的问题是数组中的第一个元素是一个空字符串,如果输入的开头有空格,就会发生这种情况。

于 2013-01-19T16:28:58.710 回答