2013-08-08 5 views
3

J'essaie juste de me faire une idée de javascript, et c'est un script que j'ai assemblé à partir de diverses sources, juste assez simple pour que je puisse comprendre au niveau où il se trouve. S'il vous plaît ne faites que si vous je vous serais reconnaissant de petite explication et ne vous attendez pas à savoir soyez pas trop complexe, ...Image Tableau et touches fléchées

<script type="text/javascript" language="JavaScript"> 
imgs=Array("01.jpg","02.jpg","03.jpg","04.jpg","05.jpg"); 
var x=0; 
document.onkeydown = checkKey; 
function checkKey(e) { 
    e = e || window.event; 
    if (e.keyCode == '37') { 
     document.getElementById("myImage").src=imgs[--x]; 
    } 
    else if (e.keyCode == '39') { 
     document.getElementById("myImage").src=imgs[++x]; 
    } 
} 
</script> 

et dans le corps ...

<img id="myImage" src="01.jpg" style="width:100%"> 

Qu'est-ce que il est censé faire est de faire une simple galerie d'images d'images qui correspondent à la largeur de l'écran, qui peut être navigué à partir des images dans le tableau en utilisant les touches fléchées. Cela fonctionne bien, pour moi au moins, excepté le fait que si j'essaie d'aller à l'image précédente alors que x = 0, ou l'image suivante de x = 4, elle s'étend indéfiniment, ne revenant pas à 01.jpg de 05. jpg et vice versa comme je le veux. Ma théorie n'a pas fonctionné. Je connais juste des bribes à ce sujet. Quelqu'un sait-il un moyen facile avec la moindre modification à ce script original?

Il n'a pas besoin d'être professionnel ou "joli". Je m'ennuie et j'expérimente. Peut-être des aspirations futures à être un concepteur de sites Web, mais pas pour l'instant certainement: D Oh, et s'il vous plaît pas de référencement JQuery? Bien sûr, ils fonctionnent, mais je veux juste comprendre une solution à ce niveau de base, et obtenir un script autonome.

+1

Le '' --x' et ++ x' et l'incrément décrément ne cessera dans les deux sens, si vous souhaitez Enveloppez puis utilisez un modulo lorsque vous les changez. Un modulo est le reste d'une division. Si vous divisez par les éléments totaux dans le tableau et prenez le reste, il vous gardera dans les limites. 'x = ((x-1) + imgs.length)% imgs.length' ou' x = (x + 1)% imgs.length' – Orbling

Répondre

4

Je pense que cela devrait faire l'affaire:

<script type="text/javascript" language="JavaScript"> 
imgs=Array("01.jpg","02.jpg","03.jpg","04.jpg","05.jpg"); 
var number_of_images = imgs.length 
var x=0; 
document.onkeydown = checkKey; 
function checkKey(e) { 
    e = e || window.event; 
    if (e.keyCode == '37') { 
     if (x == 0) 
      x = number_of_images - 1; 
     else 
      x--; 
    } 
    else if (e.keyCode == '39') { 
     if (x == (number_of_images - 1)) 
      x = 0; 
     else 
      x++; 
    } 
    document.getElementById("myImage").src=imgs[x]; 
} 
</script> 
+0

Modification de var number_of_images en var y par souci de simplicité, mais oui, ça marche . Merci: D – Terrornado

+0

La simplicité ruinera votre code. Étant donné que vous ne faites que commencer, vous pouvez aussi nommer correctement vos variables, vos fonctions, etc. Ne soyez pas comme: "c'est juste pour que je puisse apprendre ce que ça fait". Prenez quelques millisecondes pour donner des noms significatifs aux choses. Vous l'apprécierez plus tard: P – ep0

+0

Peut-être plus tard. Bien sûr, je comprends ce que vous voulez dire, que SI je fais un grand projet, je serais confondu avec un grand nombre de variables non-sensées étiquetées «y», «z», «s» et d'autres choses si je fais cela une habitude, une habitude aussi mauvaise qu'inline js peut-être? Merci pour l'avertissement alors comment "imgTotal" sonne-t-il? Oh, et si vous avez le temps, pourriez-vous s'il vous plaît expliquer le 'e = e || window.event '? Mon script fonctionne sans ça ... Je n'ai pas vraiment compris cette partie ehehe: 'D – Terrornado

0

Vérifiez si x == 0 ou x == imgs.length - 1 dans votre code et ajuster en conséquence:

function checkKey(e) { 
    e = e || window.event; 
    if (e.keyCode == '37') { 
     if (x == 0) x = imgs.length 
     document.getElementById("myImage").src=imgs[--x]; 
    } 
    else if (e.keyCode == '39') { 
     if (x == imgs.length - 1) x = -1 
     document.getElementById("myImage").src=imgs[++x]; 
    } 
} 

Alors décrémentation (x--) dans le premier cas vous mettre au dernier index, et l'incrémentation (++x) dans le second cas vous mettra à 0, alias le premier index.

+0

peut-il être fait comme ça? var y = imgs.length Fonction checkKey (e) { e = e || fenêtre.un événement; if (e.keyCode == '37') { si (x == 0) x = y document.getElementById ("myImage"). Src = imgs [-x]; } sinon if (e.keyCode == '39') { si (x == y - 1) x = -1 document.getElementById ("myImage"). Src = imgs [++ x]; } } – Terrornado

+0

Vous remplacez simplement 'imgs.length' par' y'? Oui, tu peux faire ça. En fait, c'est recommandé sur mon résultat, car il suffit d'appeler cette opération une fois au lieu de chaque fois. – gr3co

+0

hmm ... c'est apprécié. Mais que vouliez-vous dire par «vérifier dans votre code»? – Terrornado

0
<script type="text/javascript" language="JavaScript"> 
imgs=Array("01.jpg","02.jpg","03.jpg","04.jpg","05.jpg"); 
console.log(imgs.length); 
var x=0; 
document.onkeydown = checkKey; 
function checkKey(e) { 
    e = e || window.event; 
    if (e.keyCode == '37') {   
     x--; 
     if(x == -1){ x = imgs.length - 1; console.log('a max'); } 
     //document.getElementById("myImage").src=imgs[x]; 
     console.log('a '+x); 

    } 
    else if (e.keyCode == '39') {  
     x++; 
     if(x == imgs.length){ x = 0; console.log('b max'); } 
     //document.getElementById("myImage").src=imgs[x]; 
     console.log('b '+x);  
    } 
} 
</script> 

MÊME CHOSE QUE PLUS PETIT (1 ligne)

i=Array("01.jpg","02.jpg","03.jpg","04.jpg","05.jpg");var x=0;document.onkeydown=checkKey;function checkKey(e){e=e||window.event;if(e.keyCode=='37'){x--;if(x==-1){x=i.length-1;}document.getElementById("myImage").src=i[x];}else if(e.keyCode=='39'){x++;if(x==i.length){x=0;}document.getElementById("myImage").src=i[x];}} 
+0

Je suis sûr que cela fonctionne, mais est-ce que cela peut être ... réduit en taille ou quelque chose? : D Mais merci quand même. – Terrornado

+0

Ok, c'est plus petit – Drew

Questions connexes