datagott > internet.* > internet.www.ontwerp

Sjoerd (22.11.2018, 17:30)
Ik heb een image viewer waarvan je hier een demo ziet:

[..]

Klik op 'Try it Yourself' en je ziet een demo met de volledige code.

Wat hier niet werkt, en wat ik er aan toe zou willen voegen, is dat je naar
de volgende/vorige foto kunt gaan met de pijltoets rechts/links.

Naar de volgende foto ga je door op de pijl rechts binnenin de foto te
klikken. Dat is deze code:

<a class="next" onclick="plusSlides(1)">❯</a>

'class="next"' heeft alleen maar te maken met de positie van de pijl.
❯ is het teken '❯'.
Door erop te klikken wordt de functie 'plusslides(1)' gestart, die je
verderop in de code ziet staan.

Is het mogelijk om die functie ook met de pijltoets naar rechts te starten?
Hoe dat in zijn werk zou gaan, is op het internet maar lastig te vinden.
robert (22.11.2018, 19:26)
Sjoerd <xx>:
> Is het mogelijk om die functie ook met de pijltoets naar rechts te starten?
> Hoe dat in zijn werk zou gaan, is op het internet maar lastig te vinden.


Zoiets:

document.body.addEventListener('keyup', function(ev) {
if (ev.key === 'ArrowRight') {
plusSlides(1);
}
});

Documentatie:
- addEventListener: [..]
- `keyup` event: [..]
Sjoerd (23.11.2018, 00:53)
robert:
> Sjoerd:
> Zoiets:
> document.body.addEventListener('keyup', function(ev) {
> if (ev.key === 'ArrowRight') {
> plusSlides(1);
> }
> });


Het werkt zowaar, mijn dank is groot. De code blijkt nog een stuk eenvoudiger
dan gedacht.

Ik heb die code ook uitgeprobeerd in dat w3schools-voorbeeld:
[..]
en dan op 'Try it Yourself' klikken, dan links onderin tussen <script> en
</script> de code toevoegen, samen met de variant voor 'vorige foto' met de
pijltoets naar links:

document.body.addEventListener('keyup', function(ev) {
if (ev.key === 'ArrowRight') {
plusSlides(1);
}
});
document.body.addEventListener('keyup', function(ev) {
if (ev.key === 'ArrowLeft') {
plusSlides(-1);
}
});

Als je dan op 'Run' klikt (de groene knop), dan werkt het niet direct; je
moet eerst eenmaal op één van die pijlen geklikt hebben.
Wat ik mij afvraag: staat de code hier dan niet op de goede plaats?

Op mijn site werkt het wel direct. Ik heb de code in de bestaande .js-file
toegevoegd, en onderin de pagina met de viewer wordt hier naar gelinkt:

<script src="js/viewer.js"></script>

> Documentatie:
> - addEventListener: [..]
> - `keyup` event: [..]


Ik zal hier nog een studie van maken.
robert (23.11.2018, 09:29)
Sjoerd <xx>:
[..]
> plusSlides(-1);
> }
> });


Je kunt ze ook combineren, scheelt weer een event handler:

document.body.addEventListener('keyup', function(ev) {
if (ev.key === 'ArrowRight') {
plusSlides(1);
} else if (ev.key === 'ArrowLeft') {
plusSlides(-1);
}
});

> Als je dan op 'Run' klikt (de groene knop), dan werkt het niet direct; je
> moet eerst eenmaal op één van die pijlen geklikt hebben.
> Wat ik mij afvraag: staat de code hier dan niet op de goede plaats?


Ik heb geen idee hoe die "Try it yourself" van w3schools geïmplementeerd
is, dus daar durf ik niks over te zetten.

> Op mijn site werkt het wel direct.


En daar gaat het uiteindelijk om, toch? ;)
Soortgelijke onderwerpen