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

Zmiana tekstu po kliknięciu klawisza

Object Storage Arubacloud
0 głosów
1,285 wizyt
pytanie zadane 20 stycznia 2018 w JavaScript przez Yashe Dyskutant (7,720 p.)

Witam serdecznie

Na swojej stronie chce umieścić diva, który w sobie będzie posiadał tekst. Ów tekst ma się zmieniać po kliknięciu klawisza na klawiaturze np. strzałki w prawo. 

To co mam aktualnie w 90% spełnia moje wymogi, lecz w tym skrypcie jest ustawiony jedynie interwał co 3s, a bardzo zależy mi, aby tekst, który będzie się wyświetlał użytkownikowi... mógł po prostu przeczytać każdy, i gdy skończy wcisnąć klawisz na klawiaturze. 

Mój aktualny sposób: 
 

<script>
	var ilosc = 8
	var teksty = new Array;

	teksty[0] = "tekst1";
	teksty[1] = "tekst2";
	teksty[2] = "tekst3";
	teksty[3] = "tekst4";

	var numer = 0;
	function SelectText()
	{
		numer++;
		if(numer==ilosc) numer=0;
		document.getElementById('dynamic_text').innerHTML = teksty[numer];
	}
	setInterval('SelectText()',3000);
</script>



Pozdrawiam serdecznie

3 odpowiedzi

+1 głos
odpowiedź 20 stycznia 2018 przez thryndl Nałogowiec (30,470 p.)
wybrane 20 stycznia 2018 przez Yashe
 
Najlepsza

addEventListener

Robisz nasłuchiwanie zdarzeń na oknie, dokumencie czy danym elemencie, a jako typ ustawiasz

keydown

W listenerze tworzysz funkcję anonimową, która będzie sprawdzała jaki klawisz został wciśnięty i wywoływała daną funkcje.

+1 głos
odpowiedź 20 stycznia 2018 przez imklau Nałogowiec (42,090 p.)

Musisz podpiąć nasłuchiwanie na jakieś konkretne zdarzenie wykonane na stronie: addEventListener  i przy użyciu np zdarzenia keyup (z pomocą jego właściwości) sprawdzić, czy ten konkretny klawisz został wciśnięty, a dalej już co tam chcesz żeby się działo ;)

0 głosów
odpowiedź 20 stycznia 2018 przez Yashe Dyskutant (7,720 p.)

Wiem, że to wyręczanie się.. lecz jestem zielony z JS i nie wiem gdzie zaimplementować "addEventListener". Czy ma być to w miejscu wcześniejszego: 

setInterval('SelectText()',3000);

I czy obiekt, w którym jest tekst, czyli u mnie div id="dynamic_text". Czy musi posiadać zdarzenie typu onkeyup lub onkeydown. Nie wiem jak się do tego zabrać.

komentarz 20 stycznia 2018 przez thryndl Nałogowiec (30,470 p.)
edycja 20 stycznia 2018 przez thryndl

Tak, podmieniasz ten Interval, bo chyba nie chcesz, żeby funkcja wywoływała się po czasie, a po kliknięciu klawisza. Do tego trzeba zrobić nasłuchiwanie zdarzeń, czyli wcześniej wspomniany addEventListener.

Dam ci przykład, odpal sobie konsolę w dev toolsach (F12), i wklej tam ten kod:

window.addEventListener('keydown', function (e) { console.log('wciśnięty klawisz to: ' + e.keyCode); });

od kliknij na okno i naciśnij coś, w konsoli wypisze ci kod klawisza. Później tylko robisz sprawdzanie jaki klawisz został wciśnięty (czyli porównujesz e.keyCode == 39 (dla strzałki w prawo w tym wypadku) i wykonujesz dalszą część kodu

komentarz 20 stycznia 2018 przez Yashe Dyskutant (7,720 p.)

Ohh muszę pana poprosić o wpisanie tego poprawnego kodu, gdyż ja wymiękam. A nie mam tyle czasu aby się douczyć. Wiem, że to pewnie jedna.. dwie linijki i robię głupi błąd.. ale po prostu opadają mi ręce, a bardzo zależy mi na zaimplementowaniu tego jeszcze dzisiaj. 

Będę ogromnie wdzięczny za pomoc.

komentarz 20 stycznia 2018 przez Yashe Dyskutant (7,720 p.)

@thryndl,

Dodałem 
 

addEventListener('keydown', function('SelectText()', e.target == 32 );

Lecz nie działa.. i trudno się nie dziwić, gdyż pewnie to nawet nie ma prawa zadziałać.

komentarz 20 stycznia 2018 przez thryndl Nałogowiec (30,470 p.)

Zgadza się. To nie ma prawda zadziałać...

Tu masz poprawiony kod, przeanalizuj sobie go

var ilosc = 8;
                var teksty = new Array;

                teksty[0] = "tekst1";
                teksty[1] = "tekst2";
                teksty[2] = "tekst3";
                teksty[3] = "tekst4";

                var numer = 0;

                function SelectText() {
                    numer++;
                    if (numer == ilosc) numer = 0;
                    document.getElementById('dynamic_text').innerHTML = teksty[numer];
                }

                window.addEventListener('keydown', function(e) {
                    if (e.keyCode == 39) return SelectText();
                })

Nasłuchiwanie masz na klawisz strzałki w prawo.

1
komentarz 20 stycznia 2018 przez Yashe Dyskutant (7,720 p.)

Bardzo panu dziękuje.. wszystko działa. Teraz czas poświęcić wiele godzin nauce js.. 

Pozdrawiam.

Podobne pytania

0 głosów
1 odpowiedź 144 wizyt
pytanie zadane 27 kwietnia 2019 w JavaScript przez wszystkogubie Początkujący (280 p.)
0 głosów
1 odpowiedź 389 wizyt
pytanie zadane 17 września 2018 w Python przez BlvckFox Gaduła (4,240 p.)

92,615 zapytań

141,465 odpowiedzi

319,782 komentarzy

61,997 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!

...