Utworzyłem obraz w js po kliknięciu przycisku. Jak wykonać akcję na obrazie po kliknięciu go po wyrenderowaniu? Oto kod, który wypróbowałem:

function sayhi(){

    for (var m = 0; m <animals.length;m++){
        var image = document.createElement('img');
        image.src = "animalgameback.jpg";
        image.id = animals[m];
        document.getElementById('body').appendChild(image); 
        image.onclick = flip(this);

    }
}

Jednak gdy ustawiam atrybut obrazu onclick, wykonuje zadanie tylko przed renderowaniem obrazu. Jakieś sugestie?

0
Athreya Daniel 2 kwiecień 2020, 23:35

4 odpowiedzi

Najlepsza odpowiedź

Musisz zmienić linię:

image.onclick = flip(this);

Do tego:

image.addEventListener("click",function flip(this){ }, this);
1
miri 29 kwiecień 2020, 20:12

Nie wiążesz tu funkcji odwróć ze zdarzeniem „click”, ale wynikiem lub zwróceniem wartości wywołania do funkcji określonej jako flip. Tą wartością dodaną do połączenia może być okno.

image.onclick = flip;

I funkcję podobną do poniższej:

function flip (event) {
  var
    eImage = event.target;
  ...

  ...
}

Może być szybkim rozwiązaniem.

0
Duck 2 kwiecień 2020, 20:50
image.addEventListener("click", function(event) {
  flip(this) 
}, false)

Pamiętaj, aby nie używać funkcji strzałkowych, jeśli chcesz uzyskać dostęp do zakresu this funkcji.

0
Adrian Solarczyk 2 kwiecień 2020, 20:47

Programy obsługi zdarzeń muszą być funkcją, więc :::

Zmień to

image.onclick = flip(this);

Do tego

image.onclick = function(){flip(image);}
0
Mohammed Samir 2 kwiecień 2020, 20:42