特定のことがうまくいかない理由を理解する
$("#id_add_select" == "2")
どうやら、選択した要素の値が であるかどうかを確認するつもりでした2
。ただし、jQuery がどのように機能するかを知らなくても、これが機能しないことは明らかです。
このためには、ステートメントをその本質的な部分に分解する必要があります。
$()
1 つの引数を渡すことによって実行する関数呼び出しがあります: "#id_add_select" == "2"
.
関数への引数は実際の呼び出しから完全に独立していることに気付きます。これはすべての関数呼び出しに当てはまります。これが意味することは、比較の結果が渡されるということです。比較の両方のオペランドがリテラルであるため、式を自分で評価して定数に置き換えることができます:"#id_add_select" == "2"
は明らかに等しくないため、結果は になりますfalse
。
これは次のように書くことと同じであると結論付けます$(false)
。ここから、このコードが任意の要素に値があるかどうかをチェックできないことは明らかです2
。
他の答えに加えて、注意してください
スイッチ/ケースの仕組み
JavaScript のswitch/case
ステートメントにはフォールスルー動作があることに注意してください。
これは、case
値が input と一致するために句が実行されると、文にx
ヒットして構造を終了するまで、その下のすべてのコードを実行することを意味します。break;
switch/case
以下の例では、実行printTo5Or8(1)
しても after が終了せず、ステートメントまでconsole.log(1)
「フォールスルー」します!console.log(2);
break;
function printTo5Or8(x) {
switch(x){
case 1:
console.log(1);
case 2:
console.log(2);
case 3:
console.log(3);
case 4:
console.log(4);
case 5:
console.log(5);
break;
case 6:
console.log(6);
case 7:
console.log(7);
case 8:
console.log(8);
}
}
printTo5Or8(1); // Prints 1 2 3 4 5
printTo5Or8(3); // Prints 3 4 5
printTo5Or8(6); // Prints 6 7 8
printTo5Or8(7); // Prints 7 8
無効な構文
ステートメントにはswitch/case
ブロックが必要です: { statements; }
to follow after switch(expression)
! あなたは何も持っていません。
display: (".name")
display: (".address")
あなたはおそらく意味しdisplay(".name");
た。現時点では、何もしないラベルがあります。
冗長コード
function handler(situation){
var situation = situation; // <-- Remove
仮パラメータ リスト(situation)
はすでにローカル変数を宣言していますsituation
。宣言する必要はありません。
結論
JavaScript を言語として学ぶことに力を注ぐことをお勧めします。JavaScript がどのように機能するかを知ることは、コードについて推論し、これまで機能しなかった「不可能な」コードをルール化するのに役立ちます。プログラミング言語 (この場合は JavaScript) がどのように機能するかをよく理解していないと、プログラミングは魔法の呪文を混ぜ合わせているように感じられます。
プログラミングは正確な科学であり、推測や運ではありません。