使用更改索引从对象中删除元素

时间:2012-05-16 14:58:53

标签: javascript

由于索引不断变化,我无法从样式表对象中删除规则。

我有这个功能:

function delete_styles(delete_array){

    console.log(delete_array); // ["0,0", "0,1", "0,2", "0,6", "0,7", "0,8", "0,9", "0,10", "0,14", "0,15", "0,16"]

    for(var i in delete_array){

        var pair = delete_array[i].split(',');
        var p1 = parseInt(pair[0]);
        var p2 = parseInt(pair[1]);

        document.styleSheets[p1].deleteRule(p2);

    }
}

但是,一旦我删除(0,0),索引(0,1)就会失效,因为它变为(0,0)

我不能只使用一个计数器并且每次都采用递增量,因为CSS规则中可能存在较大的间隙。

这里有关逻辑的任何帮助吗?

2 个答案:

答案 0 :(得分:3)

从最后开始,而不是从头开始,然后按照自己的方式行事。这样,你刚刚删除的地方没有任何样式。

此外,使用数组时,请勿使用for in。使用通常的for循环(或while)代替。

var i = delete_array.length;
while(i--){
    var pair = delete_array[i].split(',');
    var p1 = parseInt(pair[0]);
    var p2 = parseInt(pair[1]);

    document.styleSheets[p1].deleteRule(p2);
}

答案 1 :(得分:0)

使用while循环:

var pair;
while (pair = delete_array.shift()) {
    pair = pair.split(',');
    var p1 = parseInt(pair[0]);
    var p2 = parseInt(pair[1]);
    document.styleSheets[p1].deleteRule(p2);    
}