2016-11-10 3 views
0

3つの条件が満たされたときに画像を表示しようとしていますが、BMW画像のみが表示されます。私はちょうどなぜelseがうまくいかないのか分からないように見えるかもしれません。他の方法で検索したが見つからなかった。 、&&部分は、このようなテストをすることが評価されJSで画像を扱うときにelseが得られない

(name === "Frank" || (name === "Chris" && carName === "BMW")) 

var name = prompt("Hello there, what's your name?"); 
var car = new Array("BMW", "Maserati"); 
var randomCar = Math.floor(Math.random()*car.length); 
var carName = car[randomCar]; 

if(name === "Frank" || name === "Chris" && carName === "BMW") { 
    document.getElementById("name").innerHTML = "<h1>Hello " + name + " you have won a " + carName + "<br><br>" + "<img src='img/bmw.jpg' alt='BMW Pic' style='border-radius: 10px;'</h1>"; 
} else if (name === "Frank" || name === "Chris" && carName === "Maserati") { 
    document.getElementById("name").innerHTML = "<h1>Hello " + name + " you have won a " + carName + "<br><br>" + "<img src='img/maserati.jpg' alt='Maserati Pic' style='border-radius: 10px;'</h1>"; 
} else { 
    document.getElementById("name").innerHTML = "<h1>Hello " + name + ", no car for you today !!" + "<br><br>" + "<img src='img/pitbull-sad-face.jpg' alt='Dog sadface' style='width: 70%; border-radius: 20px;'</h1>"; 
}; 
+0

これらの画像が存在しない可能性があります。あなたはあなたのimgタグを閉じていません。BTW – Popnoodles

+0

質問に入力パラメータ( 'name'と' carName')を追加できますか? –

+0

コードは[動作するようです](https://jsfiddle.net/h3vtajrg/)ですか? – adeneo

答えて

1

あなたif文のテストの式:それは書かれていたかのように

(name === "Frank" || name === "Chris" && carName === "BMW") 

が評価されます名前が「Chris」で、車名が「BMW」の場合、名前が「フランク」またはの場合は成功します。名前が "Frank"の場合、車の名前は重要ではありません。名前が「クリス」のときだけ重要です。

あなたが常に問題に名前をしたい場合は、明示的に名前のための2つのテスト括弧する必要があります。

((name === "Frank" || name === "Chris") && carName === "BMW") 

を今では名前が「フランク」や「クリス」のいずれかである場合にのみ成功します車名が「BMW」の場合はです。

+0

説明していただきありがとうございます。ありがとう! –

1

あなたの操作の順序です。何が起きているのかは、実際にif Frank+BMW or if Chris+BMWが必要なときにロジックがif frank, or if Chris+BMWと表示されていることです。 or||)部分の周りにカッコを入れます。今

if((name === "Frank" || name === "Chris") && carName === "BMW") { 
    document.getElementById("name").innerHTML = "<h1>Hello " + name + " you have won a " + carName + "<br><br>" + "<img src='img/bmw.jpg' alt='BMW Pic' style='border-radius: 10px;'</h1>"; 
} else if ((name === "Frank" || name === "Chris") && carName === "Maserati") { 
    document.getElementById("name").innerHTML = "<h1>Hello " + name + " you have won a " + carName + "<br><br>" + "<img src='img/maserati.jpg' alt='Maserati Pic' style='border-radius: 10px;'</h1>"; 
} else { 
    document.getElementById("name").innerHTML = "<h1>Hello " + name + ", no car for you today !!" + "<br><br>" + "<img src='img/pitbull-sad-face.jpg' alt='Dog sadface' style='width: 70%; border-radius: 20px;'</h1>"; 
}; 

name==="Frank"ので、最初if文が真として渡すため、フランクは常にBMWを取得します。

+0

デヴィン、ありがとう、それはとてもシンプルにすることができますが、私は見ていませんでした。説明のためのThanx! –

関連する問題