Javascript未到达数组末尾

Javascript未到达数组末尾,javascript,Javascript,我写的一些javascript代码有一个非常奇怪的问题。我已将此代码设置为在加载时执行。其思想是,如果某个值列在另一个字段中,则从该文本字段中删除该值。代码如下: var diseases = document.getElementById("AffectedBy").value; var diseasearray = diseases.split("-"); alert("disease array size: " + diseasearray.leng

我写的一些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],"")
                }
var=document.getElementById(“AffectedBy”).value;
var diseasearray=diseases.split(“-”);
警报(“疾病数组大小:“+diseasearray.length”);

对于(i=0;i首先,对于需要执行的长度,例如foodarray.length-1。
您的数组中有多少项(假设有)?首先,我们需要对您需要执行的长度进行更多解释,例如foodarray.length-1。
您的数组中有多少项(假设有)?我们需要更多解释

第一项是对以“-”开头的字符串进行匹配

我没有您的实际值,但假设#AffectedBy的值是“test1-test2-test3”

第一个警报将是3,因为diseasearray将有三个组件(test1、test2、test3)

然后运行一个循环(0、1、2)


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

第一个将与以“-”开头的字符串进行匹配

我没有您的实际值,但假设#AffectedBy的值是“test1-test2-test3”

第一个警报将是3,因为diseasearray将有三个组件(test1、test2、test3)

然后运行一个循环(0、1、2)


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

正如我在上面的评论中所说:请注意,传入的任何内容都将转换为正则表达式。如果其中包含某些特殊字符,则可能与预期的位置不匹配(反之亦然)

字符串
白点(Ich)
将转换为正则表达式
/White Spot(Ich)
;它与
白点(Ich)
不匹配,但与
白点Ich
匹配,因为括号是正则表达式中的分组运算符

更改正则表达式测试

diseases.match("-" + diseasearray[i])
进入纯字符串比较

diseases.indexOf("-" + diseasearray[i]) !== -1
你应该被安排好


(我认为::-

正如我在上面的评论中所说的:注意,无论传递到什么,都会转化为正则表达式。如果其中包含某些特殊字符,则可能与预期的不匹配(反之亦然)

字符串
白点(Ich)
将转换为正则表达式
/White Spot(Ich)
;它与
白点(Ich)
不匹配,但与
白点Ich
匹配,因为括号是正则表达式中的分组运算符

更改正则表达式测试

diseases.match("-" + diseasearray[i])
进入纯字符串比较

diseases.indexOf("-" + diseasearray[i]) !== -1
你应该被安排好


(我想::-

你能发布
受影响的
DiseaseNotSelected
的HTML代码吗?另外,请注意,你传递的任何内容都会变成正则表达式。如果其中包含一些特殊字符,它可能与你期望的位置不匹配(反之亦然).好的,再详细一点,第一个代码块分析这个字符串受以下因素影响:-Fin Rot White Spot(Ich)-Gill Rot结果返回为:-White Spot(Ich)-测试蓝鲟测试疾病,但应显示-测试蓝鲟测试疾病。第二个测试将其作为食物进行分析,用于:-Hikari小麦胚芽沉降颗粒和返回-Tetrapond棍棒新食物新食物2-新食物3,这是正确的,因为它们是其他项目。对于这些结果,数组大小分别为4及2@martijn-我想你已经一针见血了,唯一一个它似乎在玩弄的是白点(Ich)有什么办法可以解决这个问题吗?你能发布
受影响的
DiseaseNotSelected
的HTML代码吗?另外,请注意,你传递的任何内容都会变成正则表达式。如果其中包含一些特殊字符,它可能与你期望的位置不匹配(反之亦然).好的,再详细一点,第一个代码块分析这个字符串受以下因素影响:-Fin Rot White Spot(Ich)-Gill Rot结果返回为:-White Spot(Ich)-测试蓝鲟测试疾病,但应显示-测试蓝鲟测试疾病。第二个测试将其作为食物进行分析,用于:-Hikari小麦胚芽沉降颗粒和返回-Tetrapond棍棒新食物新食物2-新食物3,这是正确的,因为它们是其他项目。对于这些结果,数组大小分别为4及2@martijn-我想你已经一针见血了,唯一一个它似乎在玩弄的是白点(Ich)有什么办法可以绕过这个问题吗?我给原始问题添加了更多细节我给原始问题添加了更多细节我给原始问题添加了更多细节现在我给原始问题添加了更多细节先生,您是一个绝对的传奇人物。这非常有效。我是所有这些的初学者,所以我正在学习javascr“很高兴我能帮上忙。:-”在Javascript方面,和是不容错过的。先生,你是一个绝对的传奇人物。这是非常有效的。我是所有这些的初学者,所以我正在学习javascript。@Stefan:很高兴我能帮上忙。:-)在Javascript方面,和是不容错过的。