0

私のコードには、複数の異なる変数でtrueをテストする必要がある場所がいくつかあります-次のようになります:

if(setting1){ Do something with El A };
if(setting2){ Do something with El B };
if(setting3){ Do something with El C };
if(setting4){ Do something with El D };

これを書くためのより良い方法はありますか?

質問を追加の詳細で更新しましたが、IFのブロックが最良のオプションのようです。

設定は.dataに保存されます。これらの設定はtrue/falseであり、HTML要素を有効/無効にします。スクリプトの特定の時点で、追加のコードを実行する前に、これらの要素が有効になっているかどうかを確認する必要があります。たとえば、要素を表示すると(ユーザーがナビゲーションボタンの.dataをtrueに設定している場合)、ナビゲーションボタンが表示されます。

if(setting1){ Do A to El A };

条件内のコードには実際にはパターンがないため、ループは良い解決策ではないと思います。繰り返しになりますが、IFのブロックが最善の方法だと思いますが、このクリーナーを作成するための何らかのクールなトリックがあるかどうか知りたいです。

if(setting1){ Do A to El A};
if(setting2){ Do B to El B};
if(setting3){ Do A to El A};
if(setting4){ Do X to El X};

ありがとう!

4

4 に答える 4

1

KISSに参加していない場合は、

var settingsAndEffects = 
[
    {'test': function(params) { return bool; }, // setting1
        'apply': function(params) { ... }}, // Do something with El A
    {'test': function(params) { return bool; }, // setting2
        'apply': function(params) { ... }}, // Do something with El B
    ...
]

for(var i = 0; i < settingsAndEffects.length; i++) 
{
    if(settingsAndEffects[i].test(params))
        settingsAndEffects[i].apply(params);
}

それ以外の場合はifsに固執します。

于 2013-02-23T03:00:52.283 に答える
1

Array.forEachを使用して、各要素が無効になっているかどうかを確認します。

elements.forEach(function(el) {
    alert(el.disabled);
});
于 2013-02-23T03:36:37.280 に答える
0

ステートメントを使用してswitchください...[ここにフィラーテキスト]

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/switch

于 2013-02-23T02:48:39.793 に答える
0

settingsX恣意的でDo somethingあり、設定と要素、設定とコード、または要素とコードの間に何の関係もない場合、あなたのコードは最小限であると私は信じています。それらを表現するための多くの代替方法を提案することができます-再利用を促進するのに役立つかもしれませんが、コードを小さくすることはできません-しかし、コンテキストについてのより多くの情報が必要です。

たとえば、コードと設定の両方が要素に固有である場合:

$("#elementA").data("DoSomething", function() { ... });
$("#elementB").data("DoSomething", function() { ... });

$(".my_elements")
    .filter(function() { return specificSettings(this); })
    .each(function() { $(this).data("DoSomething")(); });

結果のコードはより冗長になるため、複数の場所で再利用する場合にのみ利点があります。

于 2013-02-23T02:55:24.167 に答える