Javascript没有到达数组的末尾

时间:2011-02-24 20:59:52

标签: javascript

我的一些javascript代码已经写了一个非常奇怪的问题。我已将此代码设置为在加载时执行。它的想法是从文本字段中删除一个值,如果它在另一个字段中列出。这是代码:

var diseases = document.getElementById("AffectedBy").value;  
        var diseasearray = diseases.split("-");  
        alert("disease array size: " + diseasearray.length);  
        for (i=0;i<diseasearray.length;i++)  
            if (diseases.match("-" + diseasearray[i]))  
                {  
                    diseasearray[i] = "-" + diseasearray[i];  
                    alert(diseasearray[i]);                           
                    document.getElementById("DiseaseNotSelected").value=document.getElementById("DiseaseNotSelected").value.replace(diseasearray[i],"")
                }

上面的代码给出了一个3的数组大小(1个空白和2个值),但当我在警报中显示值时,它只显示2个值(1个空白和1个值)

这段代码:

var foods = document.getElementById("FoodFor").value;  
        var foodarray = foods.split("-");  
        alert("food array size: " + foodarray.length);  
        for (i=0;i<foodarray.length;i++)  
            if (foods.match("-" + foodarray[i]))  
                {  
                    foodarray[i] = "-" + foodarray[i];  
                    alert(foodarray[i]);  
                    document.getElementById("FoodNotSelected").value=document.getElementById("FoodNotSelected").value.replace(foodarray[i],"")
                }

上面的代码给出的数组大小为3(1个空白和2个值),当我在警报中显示值时,它只显示3个值(1个空白和2个值)。

任何人都可以看到为什么第一个代码块只显示数组中的2个项目的原因,因为我无法理解为什么,它现在真的让我烦恼。

3 个答案:

答案 0 :(得分:4)

第一个是针对以' - '开头的字符串运行匹配。

我没有你的实际值,但是让我们说#AffectedBy的值是“test1-test2-test3”。

第一个警报将是3,因为疾病阵列将有三个组件(test1,test2,test3)

然后你会经历一个循环(0,1,2)。

第一个将失败,因为字符串中没有“-test1”,但其他两个将成功,因为有“-test2”和“-test3”子串。

答案 1 :(得分:1)

正如我在上面的评论中所说:要注意,无论你传入match的任何内容都会变成正则表达式。如果它包含一些特殊字符,则可能与您期望的不匹配(反之亦然)。

字符串White Spot (Ich)将变为正则表达式/White Spot (Ich)/;哪个匹配White Spot (Ich) 匹配White Spot Ich,因为括号是在正则表达式中对运算符进行分组。

更改正则表达式测试

diseases.match("-" + diseasearray[i])

进入普通字符串比较

diseases.indexOf("-" + diseasearray[i]) !== -1

你应该被设置。

(我想。: - )

答案 2 :(得分:0)

首先,你需要做的长度,例如foodarray.length -1。 您的阵列中有多少项(假设有)?我们需要更多解释