1

|| 使えないようです いくつかの比較を行うための私の Jquery スクリプトで。私がこれまでに持っているのは

var originaltext = [];
var novice = 'Novice'
var intermediate = 'Intermediate'
var expert = 'Expert'

// Changes text on hover
$(function() {
    $('.skillsDouble li').hover(function(){
      originaltext[$(this).index('.skillsDouble li')] = $(this).text();

      if(originaltext[$(this).index('.skillsDouble li')] == 'Selenium') {
        $(this).text(expert);
      }

      else if(originaltext[$(this).index('.skillsDouble li')] == 'CSS') {
        $(this).text(intermediate);
      }

      else {
        $(this).text(novice);
      }

    },
    function(){
       $(this).text( originaltext[$(this).index('.skillsDouble li')]);
    });
});

したがって、ホバリングしているテキストを取得して、指定した文字列と比較する単純な関数は、指定された文字列に応じて、ホバー時に別の文字列を出力します。私が落ち込んでいる場所(さらに多くのことがわかるかもしれませんが、より効率的なリファクタリングがあるかもしれません)は、複数のスティングを比較しています

だから私がこれを試すとき

 if(originaltext[$(this).index('.skillsDouble li')] == 'Selenium' || 'Jmeter')

この関数は失敗し、すべてのホバー ステータスに初心者向けのテキストが表示されます。

このステートメントで複数の文字列を比較するにはどうすればよいですか。リファクタリングに関するヒントがあれば共有してください。

どんな助けでも大歓迎

ありがとう

4

3 に答える 3

1

次のようにステートメントを修正できます(暗黙のキャストを避けるため===に代わりに使用することもできます):==

if(originaltext[$(this).index('.skillsDouble li')] === 'Selenium' || 
   originaltext[$(this).index('.skillsDouble li')] === 'Jmeter')

またはこれ、

var skills = originaltext[$(this).index('.skillsDouble li')];
if (skills === 'Selenium' || skills === 'Jmeter') 
{
}

または、配列を使用して、配列内の文字列を確認できます。

var strings = ["Selenium", "Jmeter"];
if(strings.indexOf(originaltext[$(this).index('.skillsDouble li')]) > -1)
于 2013-06-21T08:13:30.457 に答える
1

必要なもの:

 if(originaltext[$(this).index('.skillsDouble li')] == 'Selenium' || originaltext[$(this).index('.skillsDouble li')] == 'Jmeter') 

変数に格納originaltext[$(this).index('.skillsDouble li')]してから比較することをお勧めします。これにより、読みやすくなります。

例えば:

var skillsDouble = originaltext[$(this).index('.skillsDouble li')];

if (skillsDouble == 'Selenium' || skillsDouble == 'Jmeter') 
{

}
于 2013-06-21T08:13:32.697 に答える
1
if(originaltext[$(this).index('.skillsDouble li')] == 'Selenium' || 'Jmeter')

このように書かなければなりません

if(originaltext[$(this).index('.skillsDouble li')] == 'Selenium' 
   || originaltext[$(this).index('.skillsDouble li')] == 'Jmeter')

またはそれ以上

var original = originaltext[$(this).index('.skillsDouble li')];
if(original  === 'Selenium' || original  === 'Jmeter')

自分自身を繰り返さない方が常に良い考えです。前者は後者よりも優れたパフォーマンスを発揮するため、可能な限り===代わりに使用してください。==

于 2013-06-21T08:13:41.320 に答える