当长度为1时,数组上的.length崩溃(可能是分裂问题)

时间:2014-08-25 01:18:33

标签: javascript arrays search split string-length

我在使用此代码时遇到问题。我曾多次尝试对其进行故障排除,似乎已将此问题隔离开来,但无法弄清楚原因。

如果名为string的变量设置为" text v.text,"的形式。代码运行正常,第一个if语句触发句子。如果字符串包含文本但没有" v。"即没有满足搜索分隔符值的任何内容,该函数失败并且不执行第二个if语句。

链接到小提琴:http://jsfiddle.net/qsq4we99/

代码片段,还需要一个带ID"输出文本的html div。"

function brokenCode()
    { 
    //Setting Relevant Variables
        var string = "red";
        var array = string.split("v.");
        var number = array.length;
    // Checking location of things
        var findText1 = array[0].search("search text");
        var findText2 = array[1].search("search text");
    //Running Conditional Stuff
        if(number > 1)
            {
            document.getElementById('outputtext').innerHTML = "2+ listed";
            }
        else if(number < 2)
            {
            document.getElementById('outputtext').innerHTML = "1 listed";
            }
    }                   
brokenCode();

在这个简化的例子中,没有明确的解释为什么需要进行搜索操作(它们存在,因为在实际代码中它们是需要的......但是关于它们的某些东西似乎导致了问题(即使在这个简单的例子中)如果删除了两个搜索,代码将顺利运行。

1 个答案:

答案 0 :(得分:0)

如果不检查长度,则无法从数组中开始设置变量。在设置findText1&amp;之前findText2,检查以确保数组的长度大于零。

function brokenCode() { 
    //Setting Relevant Variables
    var string = "red";
    var array = string.split("v.");
    var number = array.length;

    if (number > 0) {
        // Checking location of things
        var findText1 = array[0].search("search text");
        var findText2 = array[1].search("search text");
        //Running Conditional Stuff
        if(number > 1)
        {
            document.getElementById('outputtext').innerHTML = "2+ listed";
        }
        else if(number < 2)
        {
            document.getElementById('outputtext').innerHTML = "1 listed";
        }
   }        
}           
brokenCode();