由于索引不断变化,我无法从样式表对象中删除规则。
我有这个功能:
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规则中可能存在较大的间隙。
这里有关逻辑的任何帮助吗?
答案 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);
}