• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Metoda prevent.Default()

Object Storage Arubacloud
0 głosów
613 wizyt
pytanie zadane 28 lutego 2018 w JavaScript przez kralcz88 Obywatel (1,810 p.)
let player1 = "Computer";
let player2 = prompt("Tell us what's your name");

let gameOutput = ["Love", "15", "30", "40", "Deuce", "Advantage", "Win"];
let scorePlayer1 = 0;
let scorePlayer2 = 0;
let pointPlayer1 = 0;
let pointPlayer2 = 0;
let gameResult = [];
let btn = document.getElementById('play');

const tennis = function(){

	//Random value to be compared below
	pointPlayer1 = Math.floor(Math.random()*10);
	pointPlayer2 = Math.floor(Math.random()*10);

	//Adding points to player's score
	if (pointPlayer1 > pointPlayer2) {
		scorePlayer1++;
	} else if (pointPlayer2 > pointPlayer1) {
		scorePlayer2++;
	};

	//Current score checking - result "-all"
	if(scorePlayer1 === scorePlayer2 && scorePlayer1 < 3 && scorePlayer2 < 3) {
		alert(`${gameOutput[scorePlayer1]}-all`);
	};

	//Score checking - result "deuce"
	if(scorePlayer1 === scorePlayer2 && scorePlayer1 === 3 && scorePlayer2 === 3) {
		alert(`${gameOutput[scorePlayer1 + 1]}`);
	};

	//Score checking - possible results: "Love", "15", "30", "40"
	if (scorePlayer1 > scorePlayer2 && scorePlayer1 < 4 && scorePlayer2 < 4) {
		alert(`${player1}   ${gameOutput[scorePlayer1]}-${gameOutput[scorePlayer2]}   ${player2}`);
	} else if (scorePlayer2 > scorePlayer1 && scorePlayer2 < 4 && scorePlayer1 < 4) {
		alert(`${player2}   ${gameOutput[scorePlayer2]}-${gameOutput[scorePlayer1]}   ${player1}`);
	};

	//Score checking - advantage
	if (scorePlayer1 >= 3 && (scorePlayer1 - scorePlayer2) === 1){
		alert(`${player1}   ${gameOutput[5]}`);
	} else if (scorePlayer2 >= 3 && (scorePlayer2 - scorePlayer1) ===1){
		alert(`${player2}   ${gameOutput[5]}`);
	};


	//Winner checking
	if(scorePlayer1 >= 3 && (scorePlayer1 - scorePlayer2) >= 2){
		alert(`${gameOutput[6]} for ${player1}`);
		gameResult.push(gameOutput[6]);
	} else if (scorePlayer2 >= 3 && (scorePlayer2 - scorePlayer1) >=2) {
		alert(`${gameOutput[6]} for ${player2}`);
		gameResult.push(gameOutput[6]);
	};

	//End of game
	if(gameResult.length === 1) {
		btn.addEventListener("click", function(event){
			event.preventDefault();
		});
	};
};

btn.addEventListener("click", tennis);


Witam!

Czy może mi ktoś doradzić dlaczego preventDefault() na buttonie nie działa? Warunek jest spełniony.

Proszę o pomoc.

komentarz 28 lutego 2018 przez misiek.sz Bywalec (2,050 p.)
a spróbuj do funkcji tenis przekazać event tenist(event) dać
 if(gameResult.length === 1) {
event.preventDefault();
}
komentarz 28 lutego 2018 przez kralcz88 Obywatel (1,810 p.)
Tak jak poniżej? Niestety to nie pomaga.

const tennis = function(event){

...

//End of game

if(gameResult.length === 1) {
            tennis.preventDefault();

 };

};

1 odpowiedź

0 głosów
odpowiedź 28 lutego 2018 przez zgrybus Pasjonat (24,860 p.)
a czemu nie działa? :)
komentarz 28 lutego 2018 przez kralcz88 Obywatel (1,810 p.)
No bo kliknięcie na button nadal powoduje odpalenie funkcji tennis i pojawia się alert zgodny z ostatnim stanem gry czyli "Win" :)
komentarz 28 lutego 2018 przez zgrybus Pasjonat (24,860 p.)
bo dwa te same eventy na tym samym elemencie nie maja sensu
komentarz 28 lutego 2018 przez kralcz88 Obywatel (1,810 p.)
Hmm, mogę prosić o pokazanie o co chodzi?
komentarz 28 lutego 2018 przez zgrybus Pasjonat (24,860 p.)
https://jsbin.com/qelakutipi/edit?js,console,output Zobacz jak działają te listenery, zapewne znajdziesz błąd u siebie :)
komentarz 1 marca 2018 przez kralcz88 Obywatel (1,810 p.)
Kolego wybacz, ale nie zatrybiłem jak Twój przykład ma się do mojego problemu :/
komentarz 1 marca 2018 przez kralcz88 Obywatel (1,810 p.)
@zgrybus

Done! Ale zrobiłem to inaczej. Metoda removeEvenetListener() zamaist preventDefault()

if(gameResult.length === 1) {
            btn.removeEventListener("click",tennis);
    };
komentarz 1 marca 2018 przez zgrybus Pasjonat (24,860 p.)
No oto mniej więcej mi chodziło. Żebyś zrozumiał, że przypinanie eventu nowego nic nie da :P

Podobne pytania

0 głosów
1 odpowiedź 464 wizyt
0 głosów
1 odpowiedź 246 wizyt
pytanie zadane 16 września 2020 w C i C++ przez Poczprogramista123 Bywalec (2,900 p.)
0 głosów
0 odpowiedzi 298 wizyt
pytanie zadane 16 listopada 2018 w C i C++ przez MAXIM7 Obywatel (1,990 p.)

92,592 zapytań

141,441 odpowiedzi

319,700 komentarzy

61,975 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...