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 に答える