-1
4

1 に答える 1

2
var test = "http:​/​/​www.formstack.com/​forms/​css/​3/​default.css";
for (var i = 0; i < document.styleSheets.length; i++) {
    var sheet = document.styleSheets.item(i);
    if (sheet.href.indexOf(test) !== -1) sheet.disabled = true;
}

これは機能しますが、一致が見つかった後も CSSStyleSheetList 内の追加の CSSStyleSheets をチェックし続けるため、(まだ) 非効率的です。

ブラウザのサポートを気にしない場合は、Array.prototype.some を使用して ops の数を減らすことができます

[].some.call(document.styleSheets, function(sheet) {
    return sheet.disabled = sheet.href.indexOf(test) !== -1;
});

参照: MDN の配列メソッド

編集:
パフォーマンスとレガシー サポートが混在している場合は、次のソリューションが機能します。

var test = "http:​/​/​www.formstack.com/​forms/​css/​3/​default.css";
for (var i = 0; i < document.styleSheets.length; i++) {
    var sheet = document.styleSheets.item(i);
    if (sheet.href.indexOf(test) !== -1) {
        sheet.disabled = true;
        break;
    }
}
于 2013-04-25T21:01:41.250 に答える