Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Oprava JS kódu

Ahoj, můžete mi prosím poradit proč tohle nefunguje?

<form id="form" action="/">
          <input type="button" value="a">
          <input type="button" value="b">
          <input type="button" value="c">
</form>

<script>

document.addEventListener('click', function (str) {
               if ( str === 'a' ) console.log('Bylo kliknuto na tlačítko 'a');
          else if ( str === 'b' ) console.log('Bylo kliknuto na tlačítko 'b');
          else if ( str === 'c' ) console.log('Bylo kliknuto na tlačítko 'c');
});

</script>
Předmět Autor Datum
str je undefined / null, a ani nieje správne selectnutý element. nový
Mlocik97 05.03.2019 14:22
Mlocik97
$("input[type='button']").addEventListener('click', function () { if ( this.value === 'a' ) console… nový
hynajs 05.03.2019 14:41
hynajs
ani tie else if nedávajú logiku, najmä když predchádzajúci if je ukončený stredníkom... ja bych tam… nový
Mlocik97 05.03.2019 14:43
Mlocik97
Ok, ještě navíc. nový
hynajs 05.03.2019 14:45
hynajs
Nikoli. Kdybys použil debugger, nebo rovnou console.log(str), zjistíš, že typ proměnné str je Event,… poslední
SImon Pereš 05.03.2019 19:00
SImon Pereš

str je undefined / null, a ani nieje správne selectnutý element.


$("input[type='button']").addEventListener('click', function () {
               if ( this.value === 'a' ) console.log('Bylo kliknuto na tlačítko 'a');
          else if (this.value === 'b' ) console.log('Bylo kliknuto na tlačítko 'b');
          else if (this.value === 'c' ) console.log('Bylo kliknuto na tlačítko 'c');
});


ani tie else if nedávajú logiku, najmä když predchádzajúci if je ukončený stredníkom... ja bych tam použil všade len if... bez jQuery selector skrz element.querySelector() je taky vhodnejšia voľba

Nikoli. Kdybys použil debugger, nebo rovnou console.log(str), zjistíš, že typ proměnné str je Event, případně element formuláře, (takže text se získá str.value)

a není náhodou lepší místo té ifové mašinérie použít switch nebo rovnou sprintf, když je to pokaždé stejné? Tahle procedurálnost postrádá smysl.

Zpět do poradny Odpovědět na původní otázku Nahoru