読者です 読者をやめる 読者になる 読者になる

北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

当たり前だけど case文 で || は使えない

Test jQuery Form Deserialization Plugin version 0.35を使ってるんですが、以下のようなコードが。

switch(this.type || this.tagName.toLowerCase()) {
case "radio":
case "checkbox":
    // ... 略 ...
    break;
case "select-multiple" || "select":
    // ... 略 ...
    break;
// ... 略 ...
}

これはエラーとならないですが、意図した通り動きません。「"select-multiple" || "select"」は二項演算されて「"select"」と解釈されるからです。

以下が正解。

switch(this.type || this.tagName.toLowerCase()) {
case "radio":
case "checkbox":
    // ... 略 ...
    break;
case "select-multiple":
case "select":
    // ... 略 ...
    break;
// ... 略 ...
}

ついでに、jQueryのバージョンにもよるかもしれませんが、 "select-one" も入れた方がいい気がします。