Je voudrais passer un paramètre (c'est-à-dire une chaîne) à une fonction Onclick. Pour le moment, je fais ceci:
'<input type="button" onClick="gotoNode(' + result.name + ')" />'
avec result.name par exemple égal à la chaîne "Ajouter". Lorsque je clique sur ce bouton, j'ai une erreur qui indique que Ajouter n'est pas défini. Puisque cet appel de fonction fonctionne parfaitement avec un paramètre numérique, je suppose qu'il a quelque chose à voir avec les symboles "" dans la chaîne. Quelqu'un a-t-il déjà eu ce problème?
javascript
html
JasperTack
la source
la source
Réponses:
Il semble que vous construisez des éléments DOM à partir de chaînes. Il vous suffit d'ajouter quelques guillemets autour de result.name:
Vous devriez vraiment faire cela avec des méthodes DOM appropriées.
Sachez simplement que s'il s'agit d'une boucle ou de quelque chose,
result
cela changera avant le déclenchement de l'événement et vous devrez créer une bulle de portée supplémentaire pour masquer la variable changeante.la source
Quelques préoccupations pour moi en ce qui concerne l'utilisation de l'échappement de chaîne dans onClick et à mesure que le nombre d'arguments augmente, cela deviendra difficile à gérer.
L'approche suivante aura un saut - Au clic - prenez le contrôle d'une méthode de gestionnaire et une méthode de gestionnaire, basée sur l'objet événement, peut déduire l'événement clic et l'objet correspondant.
Il fournit également un moyen plus propre d'ajouter plus d'arguments et d'avoir plus de flexibilité.
Sur la couche javascript:
L'avantage ici est que nous pouvons avoir autant d'arguments (dans l'exemple ci-dessus, data-arg1, data-arg2 ....) que nécessaire.
la source
invoke
n'est pas appelé lorsque vous cliquez sur le boutonJSON.stringify(obj)
dans le HTML etJSON.parse(event.target.getAttribute('data-arg'))
dans la couche JavaScriptJe suggère même de ne pas utiliser de
onclick
gestionnaires HTML et d'utiliser quelque chose de plus commun tel quedocument.getElementById
.HTML:
JavaScript:
la source
onclick
n'est pas une fonction, c'est une propriété à laquelle vous devez attribuer une fonction:....onclick = function() {...};
Je suppose que vous créez un bouton en utilisant JavaScript lui-même. Donc, l' erreur dans votre code est que, il se présentera sous cette forme
A cet état actuel,
add
sera considéré comme un identifiant comme les variables ou les appels de fonction. Vous devez échapper à la valeur comme celle-cila source
C'est une manière agréable et ordonnée d'envoyer de la valeur ou un objet.
la source
Essaye ça..
HTML:
JavaScript:
Remarque: assurez-vous d'envoyer des arguments entre les signes '' comme ('a1') dans le code html
la source
vous utilisez également le symbole d'accent grave (`) dans la chaîne
essayez:
pour plus d'informations, visitez MDN et Stackoverflow
Par Chrome, Edge, Firefox (Gecko), Opera, Safari, mais pas Internet Explorer.
la source
si votre bouton est généré dynamiquement:
Vous pouvez passer des paramètres de chaîne aux fonctions javascript comme le code ci-dessous:
J'ai passé 3 paramètres où le troisième est un paramètre de chaîne j'espère que cela aide.
la source
Modifié: Si l'exigence est de référencer l'objet global (js) dans votre code HTML, vous pouvez essayer ceci. [N'utilisez pas de guillemets ('ou ") autour de la variable]
ViolonRéférence de .
Javascript:
HTML:
la source
Paramètre multiple:
la source
Pour passer plusieurs paramètres, vous pouvez convertir la chaîne en la concaténant avec la valeur ASCII comme, pour les guillemets simples, nous pouvons utiliser '
la source
Voici une solution Jquery que j'utilise.
Jquery
HTML
la source
Vous pouvez passer la réfrence ou la valeur de chaîne juste mettre la fonction dans les virgules "" asp ci-dessous l'instantané
la source
Pour passer plusieurs paramètres, vous pouvez convertir la chaîne en la concaténant avec la valeur ASCII comme, pour les guillemets simples, nous pouvons utiliser
'
le même paramètre que vous pouvez passer à l'
onclick()
événement.Dans la plupart des cas, il fonctionne avec tous les navigateurs.la source
si à utiliser pour la génération d'un ensemble de boutons avec différents paramètres de gestionnaires. https://www.w3schools.com/js/js_function_closures.asp
si nous faisons:
puis fonction foo start après chaque page de mise à jour.
si nous faisons:
puis pour tous les boutons créés dans la boucle, la dernière valeur du paramètre "result.name"
la source
si vous utilisez asp, vous pouvez utiliser javascript:
HTML:
Javascript:
la source
Si vous ajoutez un bouton ou un lien dynamiquement et que vous rencontrez le problème, cela peut être utile. J'ai résolu de cette façon.
Je suis nouveau sur HTML, JQuery et JS. Il se peut donc que mon code ne soit pas optimisé ni sa syntaxe, mais cela fonctionnait pour moi.
la source
Dans Razor, vous pouvez passer des paramètres de manière dynamique: @ Model.UnitNameVMs [i] .UnitNameID
la source
Vous pouvez l'utiliser,
son travail pour moi
la source
la source
Ce qui suit fonctionne très bien pour moi,
la source
Vous pouvez utiliser ce code dans la méthode onclick de votre bouton:
la source