alert(cellvalue)显示三个单独的弹出窗口:

-10-|Car|*POB*[,]-20-|Bus|*CLR*

-22-|Car|*CLR*[,]-5-|Bus|*POB*

-12-|Car|*POB*[,]-55-|Bus|*CLR*

然后,我将这些值拆分并获得我需要的三个值,如下所示:

            var array = cellvalue.split("[,]");
            var start_carStat = array[0].indexOf('*') + 1;
            var end_carStat = array[0].indexOf('*',start_carStat);
            var text_carStat = array[0].substring(start_carStat,end_carStat);


警报(text_carNum);显示“ 10”,“ 22”,“ 12”

            var start_carNum2 = array[1].indexOf('-') + 1;
            var end_carNum2 = array[1].indexOf('-',start_carNum2);
            var text_carNum2 = array[1].substring(start_carNum2,end_carNum2);


警报(text_carNum);显示“ 20”,“ 5”,“ 55”

然后按以下方式返回它们:

return (text_carNum+', '+text_carNum2);


由于每个数组中最多可以有20个值,因此我尝试使用for循环来实现相同的功能,但是我似乎无法使其正常工作。

目前,我有:

            for(var i=0;i<array.length;i++){
                var start_carNum = array[i].indexOf('-') + 1;
                var end_carNum = array[i].indexOf('-',start_carNum);
                var text_carNum = array[i].substring(start_carNum,end_carNum);

                return (text_carNum);
            }


此警报(text_carNum)仅显示“ 10”,“ 22”,“ 12”。

关于如何使用for / each与上面相同的方式工作的任何想法?

(希望我已经解释得足够清楚了)

最佳答案

您在循环中调用return,因此该函数在第一次迭代结束时退出。您必须将所有值连接到变量中:

        var str_return = '';
        for(var i=0;i<array.length;i++){
            var start_carNum = array[i].indexOf('-') + 1;
            var end_carNum = array[i].indexOf('-',start_carNum);
            var text_carNum = array[i].substring(start_carNum,end_carNum);

            str_return += '<span style="color:'+color+' !important;">'+text_carNum +'</span>';
        }
        return str_return;


顺便说一句,请注意,我更改了最后一行:style属性在颜色之后被关闭(双引号),必须在!important之后关闭。

07-24 09:24