2017-09-24 11 views
0
var message;  
     if ($('#one').length == 1){ 
      message = "101"; 
     } 
     if ($('#two').length == 2){ 
      message = "102"; 
     } 
     if ($('#third').length == 3){ 
      message = "103"; 
     } 
    console.log(message); 

IF使用演算子(||または別のもの)で条件を指定すると、どのようにすべてのIFを結合できますか? 私はそれをやってみましたが、残念です。 あなたの前進をありがとう。IF条件付き文IF IF(JavaScript)

+0

質問にHTMLを含めることはできますか? – guest271314

+0

私は質問が間違っていたことをお詫びします。私はそれを修正しました – Makhnov

+0

ID「3」のページに3つの要素が存在する可能性がありますか?実際の問題を説明するのではなく、あなたの解決策を尋ねるという罠に惑わされていると思います。 – llama

答えて

1

実際には、単に0長さのための条件を持っている

var message = "10"+$('#one').length; 
console.log(message); 

注記を行うことができます。しかし、同じIDを持つ複数の要素を持つ理由は何ですか?あなたはクラスを意味しますか?

+0

質問が間違っていたことをお詫びします。 – Makhnov

1

セレクタ"#one"を用い、得られた.lengthが常にdocumentの要素のidとして0又は1のいずれかであるべきであるが、別の要素に重複しない、一意でなければなりません。

HTML及び使用セレクタ".one"における要素でidためid"one"代替classを有する複数の要素が存在する場合。

+0

質問が間違っていたことをお詫びします。 – Makhnov

0

質問は変更されています。正直なところ、以前よりも意味がなくなっています。

3つの要素をすべて選択し、実際の要素の数に基づいてメッセージを構成するとします。下の2番目の例を使って、IDがどのように表示されるかを示しますが、クラスは優れています。

var msgs = { 
    1: "101", 
    2: "102", 
    3: "103", 
} 

var message = msgs[$("#one,#two,#three").length] || "Unknown"; 

これで3つすべてを選択しようとしましたが、実際に見つかった数に基づいてメッセージが表示されます。

これは、文字列に長さを追加するだけの簡単な例ではありません。


元答え

私はいつも.lengthとメッセージの間に、このようなきちんとしたペアリングがあるように起こっているという仮定を作るつもりはありません。

より一般的な解決策は、switchステートメントを使用することです。

var message;  
switch ($('#one').length) { 
    case 1: message = "101"; break; 
    case 2: message = "102"; break; 
    case 3: message = "103"; break; 
    default: message = "Unknown"; 
} 
console.log(message); 

switchは唯一の方法ではありません。数値をメッセージに関連付けるオブジェクトを作成することもできます。

var msgs = { 
    1: "101", 
    2: "102", 
    3: "103", 
} 

var message = msgs[$("#one").length] || "Unknown"; 

重複するIDが良好ではないがquerySelectorAllは、複数返すことができるけれどものjQueryのみ、ID選択のための一つの要素を返すことに注意してください。

+0

私はそれを修正した質問が間違っていたことを謝罪する – Makhnov