0

我正在编写一个程序,它将获取文本区域的内容,提取重要信息,格式化然后输出。

我已经成功地让我的程序将所有信息传递到一个数组中。

目前我正在努力让程序识别客户姓名的位置(如果“详细信息”不在数组中的正确位置,它将始终位于“名称”和“详细信息”或“客户”之间。

// Parse the input box into an array
var inputArr = document.getElementById("inputBox").value.split(/[\s]/);

// Instantiate variables
var custDet, contactName, phone, companyName, email;

// Pull out all strings between "Name" and "Email" ("Card" should always be after "Email" or else it's the wrong string
if(inputArr[inputArr.indexOf("Email") + 1] == "Card") {
    custDet = inputArr.slice(inputArr.indexOf("Name") + 1, inputArr.indexOf("Email"));  

    // Pass the customer's name into the string contactName
    for(i = 0; custDet[i] != "Details" || custDet[i] != "Customer" || i < custDet.length; i++) {
        if(custDet[i].search(",") != -1) {
            var temp = custDet[i].split(/[,]/);
            temp.reverse();
            contactName = contactName + temp.join(" ");
        }
    }
    contactName = contactName + custDet.join(" ");
} else {
    contactName = prompt("Error: Could not locate a valid Contact Name. Please input Contact Name.");
    phone = prompt("Error: Could not locate a valid Contact Phone Number. Please input Contact Phone Number.");
    companyName = prompt("Error: Could not locate a valid Company Name. Please input Company Name.");
    email = prompt("Error: Could not locate a valid Email Address. Please input Email Address.");
}

错误被抛出...

if(custDet[i].search(",") != -1) {

我不明白为什么。对我的逻辑的任何帮助也将不胜感激。

谢谢你们。:)

4

2 回答 2

1

该错误可能意味着您尝试引用 的项目icustDetcustDet其中没有那么多元素。

您的 for 循环是“非标准”的:

for(i = 0; custDet[i] != "Details" || custDet[i] != "Customer" || i < custDet.length; i++) 

我怀疑这是问题的根源。 i变得高于custDet.length,所以这意味着custDet[i]返回未定义。因为undefined != "Details"是真的,所以循环不断过去custDet.length

于 2013-01-26T20:37:59.977 回答
0

你可能想要&&,不是||。否则,条件永远不会满足,循环也不会结束。

简单的解释:对于第一个为假的,custDet[i]必须等于"Details"。但如果是这样的话,那custDet[i] != "Customer"将是真的,循环将继续。对于 的所有其他值custDet[i]custDet[i] != "Details"将为真,循环将继续。

于 2013-01-26T20:50:13.153 回答