Citations triples ?Comment délimiter un paramètre de chaîne Javascript lié aux données dans ASP.NET ?
-
08-06-2019 - |
Question
Comment délimiter un paramètre de chaîne lié aux données Javascript dans une ancre OnClick
événement?
- J'ai une balise d'ancrage dans un contrôle ASP.NET Repeater.
- Le
OnClick
L'événement de l'ancre contient un appel à une fonction Javascript. - La fonction Javascript prend une chaîne comme paramètre d'entrée.
- Le paramètre de chaîne est renseigné avec une valeur liée aux données provenant du répéteur.
J'ai besoin des "guillemets doubles" pour le Container.DataItem
.
J'ai besoin des "guillemets simples" pour le OnClick
.
Et j'ai encore besoin un délimiteur supplémentaire (guillemets triples ?) pour le paramètre de chaîne d'entrée de l'appel de fonction Javascript.
Puisque je ne peux plus utiliser de « guillemets simples », comment puis-je m'assurer que la fonction Javascript sait que le paramètre d'entrée est une chaîne et non un entier ?
Sans les guillemets supplémentaires autour du paramètre de chaîne d'entrée, la fonction Javascript pense que je transmets un entier.
L'ancre:
<a id="aShowHide" onclick='ToggleDisplay(<%# DataBinder.Eval(Container.DataItem, "JobCode") %>);' >Show/Hide</a>
et voici le Javascript :
<script language="JavaScript" type="text/javascript">
/* Shows/Hides the Jobs Div */
function ToggleDisplay(jobCode)
{
/* Each div has its ID set dynamically ('d' plus the JobCode) */
var elem = document.getElementById('d' + jobCode);
if (elem)
{
if (elem.style.display != 'block')
{
elem.style.display = 'block';
elem.style.visibility = 'visible';
}
else
{
elem.style.display = 'none';
elem.style.visibility = 'hidden';
}
}
}
</script>
La solution
J'ai récemment eu un problème similaire et la seule façon de le résoudre était d'utiliser de vieux codes HTML simples pour un seul ('
) et des guillemets doubles ("
).
Le code source était bien sûr un désastre total, mais cela a fonctionné.
Essayer
<a id="aShowHide" onclick='ToggleDisplay("<%# DataBinder.Eval(Container.DataItem, "JobCode") %>");'>Show/Hide</a>
ou
<a id="aShowHide" onclick='ToggleDisplay('<%# DataBinder.Eval(Container.DataItem, "JobCode") %>');'>Show/Hide</a>
Autres conseils
onclick='javascript:ToggleDisplay("<%# DataBinder.Eval(Container.DataItem, "JobCode")%> "); '
Utilisez comme ci-dessus.
Sans les guillemets supplémentaires autour du paramètre de chaîne d'entrée, la fonction Javascript pense que je transmets un entier.
Pouvez-vous exécuter une fonction de chaîne rudimentaire pour forcer JavaScript à la transformer en chaîne ?Comme
value = value + ""
Essayez de placer le texte supplémentaire dans le bloc de script côté serveur et de le concaténer.
onclick='<%# "ToggleDisplay(""" & DataBinder.Eval(Container.DataItem, "JobCode") & """);" %>'
Modifier:Je suis presque sûr que vous pouvez également utiliser des guillemets doubles en dehors du bloc de script.
Passer une variable à une fonction sans guillemet simple ni double
<html>
<head>
</head>
<body>
<script language="javascript">
function hello(id, bu)
{
alert(id+ bu);
}
</script>
<a href ="javascript:
var x = "12";
var y = "fmo";
hello(x,y)">test</a>
</body>
</html>