var messages = [
'First click appends text "Message 1"',
'Second click appends text "Message 2"',
'Third click appends text "Message 3"'
];
var i = -1;
var target = $("#target");
$("#selector").click(function(){
target.append(messages[i = ++i % messages.length]);
});
Cela les "ajoutera" en fait. Si vous vouliez remplacer chaque message à chaque fois, vous utiliseriez .text()
au lieu de .append()
.
DEMO (en utilisant .text()
):http://jsfiddle.net/thVK6/
La variable i
sera incrémenté à chaque clic. Lorsque i
est égal à messages.length
, il sera réinitialisé à 0
.
Ainsi, à chaque clic, i
est utilisé pour récupérer un nouveau message à partir du tableau.
Pour mieux expliquer l'astuce de l'incrément, le %
opérateur modulo renvoie le reste lors de la division i
par messages.length
.
Lorsque i
est égal à messages.length
, le reste est 0
, donc nous sommes de retour au début.
var i = -1;
premier clic:
++i; // 0
i = i % messages.length; // 0
messages[ i ]; // first message (index 0)
Deuxième clic:
++i; // 1
i = i % messages.length; // 1
messages[ i ]; // second message (index 1)
Troisième clic:
++i; // 2
i = i % messages.length; // 2
messages[ i ]; // third message (index 2)
cliquez quatrième:
++i; // 3
i = i % messages.length; // 0, because 3 % 3 === 0
messages[ i ]; // first message (index 0)
... et i
est maintenant 0
à nouveau, il recommence.
donc la même astuce incrément, mais précisées ci-dessus serait comme être ...
$("#selector").click(function(){
++i;
i = i % messages.length;
target.append(messages[ i ]);
});
http://jsfiddle.net/thVK6/4/
Pourriez-vous s'il vous plaît expliquer cette syntaxe un peu plus? messages [i = ++ i% messages.length] ... Je ne suis pas familier. Merci! –
@ j-man86: Oui, déjà mis à jour. Je vais donner une autre mise à jour pour expliquer plus. –
'messages [i = ++ i% messages.length]' - Je pense que c'est une mauvaise idée. Le code ne devrait pas être déroutant. Vous ne voulez pas revenir à ce code dans quelques semaines et vous vous demandez ce que vous avez fait là-bas. Je recommande plusieurs instructions à la place. –