请教一个问题 js代码/cart_item_\d+=(\d+)/g  匹配所有我想要的数据类型大概为 key=value我只取value以下这段代码 在ff中正常运行  在chrome ie 中都会陷入死循环function calcItemCount(){
var ItemCount = 0;
do{
var results = /cart_item_\d+=(\d+)/g.exec(document.cookie);
                //在ff中正则表达式会自动到上次匹配到的位置,然后匹配下一个,最后赋值。
                //在chrome和ie中results一直不变,请问怎么样才能跨浏览器实现这个功能?
if(results == null) break;
ItemCount += parseInt(results[1]);
}while(1)
return ItemCount;
}

解决方案 »

  1.   

    不要在循环里声明变量,你那样写不慢才怪啊function calcItemCount(){
        var str = document.cookie;
        var ItemCount = 0;
        var reg = /cart_item_\d+=(\d+)/g;
        var results;
        do{
            results = reg.exec(str);
            if(results == null) break;
            ItemCount += parseInt(results[1]);
        }while(1)
        return ItemCount;
    }
      

  2.   

    ItemCount += parseInt(results[1])
    如果考虑效率,这句应该是问题最大的,可以把所有的result放到一个array里面,循环结束了用jion,然后再eval。
    感觉会快点。
      

  3.   

    直接用match吧
    /g可以直接return符合的数组