En passant dynamique des paramètres à une fonction JavaScript en utilisant innerHTML
Je vais avoir des problèmes en passant un paramètre dynamique à une fonction JavaScript en utilisant innerHTML.
Inclus ci-dessous est le code actuel que j'utilise:
var name = "test";
frm.innerHtml = '<button name="close" id="close" title="Cancel" type="button"
onclick="closeTab('+name+');">Return</button>';
Quand je déboguer le code de la closeTab()
fonction, le paramètre spécifié par le name
variable est null
.
Je crois qu'il y est un problème avec la déclaration de la valeur lors de la modification de la propriété innerHTML.
Toute aide serait grandement appréciée.
Grâce
u ne signifie j'utilise simplement le nom de la variable sans les guillemets? Merci
vous avez utilisé la valeur de nom d'une variable, d'ajouter des citations.
Vous devez utiliser le DOM comme
vous avez utilisé la valeur de nom d'une variable, d'ajouter des citations.
Vous devez utiliser le DOM comme
document.createElement
et les autres au lieu de innerHtml
parce que c'est plus propreOriginalL'auteur Coder | 2012-07-04
Vous devez vous connecter pour publier un commentaire.
Votre code résultant est:
Pouvez-vous voir ce qui ne va pas?
test
est traité comme une variable, quand vous avez réellement l'intention d'être une chaîne de caractères.J'aime utiliser
JSON.stringify
à faire une variable parseable (un peu commevar_export
en PHP), mais dans ce cas, vous avez également besoin d'échapper les guillemets. Donc:Utilisez-la dans votre bouton au lieu de simplement
test
.Qui ne fonctionne que parce que
name
est une variable globale, mais dès que vous faites quelque chose de plus compliqué, il sera "inexplicablement" broken.OriginalL'auteur Niet the Dark Absol
Votre déclaration dynamique est en passant le paramètre de la variable au lieu de la valeur du paramètre. Afin de corriger ce problème, vous devez passer la valeur sous forme de chaîne, au lieu d'une variable, qui est effectuée par les moulant et s'échapper de la variable entre guillemets simples comme illustré ci-dessous:
OriginalL'auteur RobB
À l'aide de DOM:
Je n'ai vraiment pas encourager la surutilisation de
innerHTML
que c'est salissant, et peut parfois être lent.OriginalL'auteur Alvin Wong
En supposant que votre html est -
Votre JS devrait être -
Check this out - http://jsfiddle.net/arindam006/avgHz/1/
C'est la façon la plus propre à atteindre cet objectif, bien que innerHtml n'est pas une bonne façon de le faire comme tout le monde l'a suggéré ci-dessus.
OriginalL'auteur Arindam Roy
J'ai simplement utilisé onclick="closeTab(nom);"> dans innerHTML et cela a fonctionné. Je suppose que travaillé coz nom est variable globale.
OriginalL'auteur Coder