l'affectation de la variable document.getElementById().Innerhtml ne fonctionne pas
Voir le code ci-dessous:
var text=["yuppie", "kkkoseh", "watchdog"];
var messageIndex=0;
function looptext (){
var MessageElement= document.getElementById("happy").innerHTML
var Message=text[messageIndex];
MessageElement=Message;
messageIndex++;
if(messageIndex>=text.length){
messageIndex=0;
}
}
window.onload = function() {
setInterval(looptext, 1000);
};
Il ne fonctionne pas.
Mais quand j'enlève .innerhtml
à la variable MessageElement
et définir la MessageElement.innerHtml= Message
, il fonctionne.
Pourquoi est-il si?
Désolé, je suis un débutant l'apprentissage de JavaScript.
OriginalL'auteur user3322381 | 2014-02-18
Vous devez vous connecter pour publier un commentaire.
Parce que c'est la manière dont les variables et les valeurs de travail en JavaScript. Imaginez variables comme des conteneurs. Avec
le conteneur
MessageElement
contiendra un chaîne. Plus tard, avecil vous suffit de mettre une nouvelle valeur dans le conteneur, et écrase la valeur précédente de contenu/le conteneur avait. Mais il n'a aucun effet sur l'endroit où la valeur précédente.
Maintenant la variable contient une référence à l'élément DOM et
n'est pas attribuer une nouvelle valeur à la variable (ne pas mettre une nouvelle valeur dans le conteneur), il utilise la valeur de la variable (conteneur).
Non, JavaScript est affecter par valeur, ne pas affecter par référence.
OriginalL'auteur Felix Kling
innerHTML retourner une chaîne de ne pas e pointeur vers le document.getElementById("heureux")'s nœud de texte.
OriginalL'auteur Manuel Spigolon
essayer cette
OriginalL'auteur Amin
@Felix Roi est correct.
Pour tester la façon dont il se comporte vraiment j'ai moi-même essayé l'extrait de code ci-dessous sur W3Schools.
Et j'ai trouvé:
Toutefois, la valeur de m est toujours http://www.microsoft.com/ que Felix dit à juste titre - 'MessageElement.innerHtml = Message, ne pas affecter une nouvelle valeur à la variable'.
Merci Felix 🙂
OriginalL'auteur Atul O Holic