0

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

我有这个功能:

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 规则中可能存在更大的差距。

这里的逻辑有什么帮助吗?

4

2 回答 2

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);
}
于 2012-05-16T15:01:24.293 回答
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);    
}
于 2012-05-16T15:01:40.960 回答