Il y a quelque chose que je ne comprends pas très bien. Cette fois, j'ai vu un morceau de code qui explique très bien le problème :
function moveElement (elementID, final_x, final_y, interval) {
var elem = document.getElementById(elementID);
var xpos = parseInt(elem.style.left);
var ypos = parseInt(elem.style.top);
......
var repeat = "moveElement('"+ elementID +"',"+ final_x +","+ final_y +","+ interval +")";
movement = setTimeout(repeat, interval)
}
Je n'ai qu'une question :
var repeat = "moveElement('"+ elementID +"',"+ final_x +","+ final_y +","+ interval +")";
Dans ce paragraphe, elementID
,final_x
,final_y
,interval
les quatre paramètres sont transmis. À l'exception du premier qui est une chaîne, les trois derniers sont tous des nombres.
La première chose que je ne comprends pas, c'est pourquoi ces paramètres doivent être placés entre guillemets. La deuxième chose que je ne comprends pas, c'est ce que fait le signe plus ici. Une autre question est pourquoi cette chaîne comme elementID
est-elle entourée de guillemets doubles ? Dans quelles circonstances est-ce nécessaire ?
En général, je pense que le signe plus convient à l'épissage de chaînes, mais ce n'est évidemment pas le cas ici. Une paire de guillemets est un espace indépendant. Quelle est la signification du signe plus qui y est enveloppé ?
1. Les guillemets sont entourés de virgules
2.123456+"somestring"→"123456somestring"
3.elementId est un paramètre de type String, donc ajoutez des guillemets
La variable est enfin convertie en chaîne ! Les nombres + guillemets changent de caractères Si le paramètre dont vous avez besoin est une chaîne au lieu d'un nombre
.La chaîne ici équivaut à l'utilisation de eval dans setTimeout, qui fait référence à la chaîne de code que vous souhaitez exécuter après un délai de quelques millisecondes
Tout d'abord, le signe plus ici est en effet utilisé pour l'épissage des cordes
Le résultat deest
Passez simplement la variable de chaîne nommée répétition en tant que paramètre à setTimeout, c'est-à-dire qu'après un intervalle de quelques millisecondes, la répétition sera exécutée
C'est en fait fondamentalement la même chose que
Cela devrait être plus facile à comprendre, non ?
Cependant, il existe encore des différences entre ces deux méthodes. Généralement, la méthode mentionnée par l'interrogateur n'est pas recommandée. Pour plus de détails, voir window.setTimeout, Exécuter une chaîne en tant que fonction dans javascript setTimeout ?
.