2016-11-22 5 views
2

これは簡単なので、なぜ私はそれに問題があるのか​​分かりません。私は2つの画像の間にフリップカードを模倣しようとしているので、クリックすると他の画像に変わるだけです。イメージがクリックされるたびにelse部分に決して送られないので、if/else文で問題が発生しています。 HTMLページのソースコードでは、イメージのsrcは変更されていますが、毎回ifステートメントを渡します。Javascript:img src onclickを変更すると、一度しか動作しません。

(function() { 

    // attaches event handler to image 
    window.onload = function() { 

     var image1 = document.getElementById("image1"); 
     image1.onclick = changeImage; 
    }; 

    // changes image when clicked to flip from image to text and text to image 
    function changeImage() { 
     if (document.getElementById("image1").src = "img/top.png") { 
      document.getElementById("image1").src = "img/toptext.png"; 
      //window.alert('hi'); 
     } 
     else { 
      window.alert('it passed'); 
      document.getElementById("image1").src="img/top.png"; 
     } 
    } 
})(); 
+2

にあればcomparaison

if (document.getElementById("image1").src = "img/top.png") { 

変更のために==を使用する必要がありますが、**もしあなたが1 –

+1

使用してアレントヒント**文の条件が問題です。 ** = ** **を等号と置き換える。 – Anson

答えて

7

==または=== if条件チェックでの比較のため。

=を使用すると値が割り当てられ、割り当てられた文字列は空の文字列ではないため、常にtrueになります。

function changeImage() { 
     if (document.getElementById("image1").src == "img/top.png") { 
      document.getElementById("image1").src = "img/toptext.png"; 
      //window.alert('hi'); 
     } 
     else { 
      window.alert('it passed'); 
      document.getElementById("image1").src="img/top.png"; 
     } 
    } 
+0

_ "常に真実です" _割り当てられた値が真実である場合にのみ有効です –

+0

@PatrickEvansはい私は同意しますが、この条件では、割り当てられた文字列が空でない文字列の場合は常に正しいでしょうか? – Deep

+0

if文で比較を行うときに.getAttribute( "src")を使う必要もありました。ありがとう! – Alex

2

あなたのif文であなたの比較演算子を確認し

if (document.getElementById("image1").src == "img/top.png") {