2016-11-22 2 views
2

Das ist so einfach, ich bin mir nicht sicher, warum ich Probleme damit habe. Ich versuche, eine Flip-Karte zwischen zwei Bildern zu imitieren, so dass beim Anklicken einfach auf das andere Bild gewechselt wird. Ich habe Probleme mit meiner if/else-Anweisung, denn jedes Mal, wenn das Bild angeklickt wird, kommt es nie zum else-Teil. Im Quellcode der HTML-Seite wird der Quellcode des Bildes geändert, aber jedes Mal die if-Anweisung übergeben.Javascript: ändern img src onclick funktioniert nur einmal

(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

Ihre Vergleichsoperator in der if-Anweisung überprüfen, deuten Sie Arent mit einem –

+1

Der ** wenn ** Anweisungsbedingung ist das Problem. Ersetze die gleiche Markierung ** = **, um die gleiche Vergleichsmarke zu sein ** == **. – Anson

Antwort

7

Verwenden Sie == oder === für den Vergleich in Wenn Zustandsprüfung.

using = wird den Wert zuweisen und immer true sein, da die zugewiesene Zeichenfolge keine leere Zeichenfolge ist.

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

_ "immer wahr sein." _ Es wird nur wahr sein, wenn der zugewiesene Wert truthy ist –

+0

@PatrickEvans ja ich stimme zu, aber in diesem Zustand, wenn die zugewiesene Zeichenkette keine leere Zeichenkette ist, wird sie immer richtig sein? – Deep

+0

Ich musste auch .getAttribute ("src") verwenden, wenn ich den Vergleich in der if-Anweisung durchführte. Vielen Dank! – Alex

2

Sie sollten == verwenden für eine if comparaison

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

Änderung in

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