4

私は次のJavaScriptコードを持っています:

function changeButtonState(targetSelector, action, iconClass) {
    var $target = $(targetSelector);
    var $targetSpan = $(targetSelector + ' span');
    $targetSpan.removeClass('sprite-blank').addClass(iconClass);
}

関数が呼び出されたときにが値を持っている$targetSpan.removeClass(..).addClass場合にのみ機能するようにするにはどうすればよいですか。iconClass私が混乱しているのは、それが定義されているかどうかを確認するのか、それとも長さが0以上かどうかを確認するのかということだと思います。

4

6 に答える 6

4

ifステートメントを使用するだけです。

if (iconClass){}

または、typeof

if (typeof iconClass != 'undefined') {}
于 2013-02-05T00:02:07.880 に答える
1
if (typeof(iconClass)=='undefined') {
  // nothing was passed
}
于 2013-02-05T00:01:55.353 に答える
1

LIVE DEMO

if ( 'undefined' != typeof iconClass ) {  /**/  }
于 2013-02-05T00:03:41.953 に答える
1

ユースケースでは、iconClassが文字列であると想定する必要があります。その場合、最初のif条件を提案します。2つ目はおそらく制限が厳しすぎます。通常、関数を呼び出す人が実際に3番目のパラメーターを渡さないか、undefinedを渡した場合にのみ使用されます。ただし、呼び出し元がnullまたは空の文字列を渡した場合、最初のif条件もそれらの条件をキャッチします。書くのが最も簡単で、Javascriptif (variable) { }では、より多くのことをキャッチし、読み取りと書き込みが非常に簡単であるため、単純にチェックするのが非常に一般的です。

if (iconClass) {
   // Executes if iconClass is not null, not undefined, not 0, and not empty string
}
if (typeof iconClass != 'undefined') {
   // WILL execute if iconClass is null, 0, empty string
   // Only will not execute if iconClass is undefined!
}
于 2013-02-05T00:12:29.540 に答える
0

おそらく、iconClass文字列(クラス名)である必要があるため、文字列であるかどうかをテストする必要があります。

if (typeof iconClass == 'string') 

または、正規表現を使用して、それが有効なクラス名であることを同時にテストすることもできます。

if (/^[a-z][a-z0-9]*$/i.test(iconClass))

正規表現では、テストする文字数が増える可能性があります(少なくともハイフン)。これはお任せします。CSSクラス名で有効な文字は何ですか?役立つかもしれません。

于 2013-02-05T01:02:58.977 に答える
-1
if(iconClass.length > 0){
    $targetSpan.removeClass('sprite-blank').addClass(iconClass);
}
于 2013-02-05T00:01:32.377 に答える