Citations triples ?Comment délimiter un paramètre de chaîne Javascript lié aux données dans ASP.NET ?

StackOverflow https://stackoverflow.com/questions/1873

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>
Était-ce utile?

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 (&#39;) et des guillemets doubles (&#34;).

Le code source était bien sûr un désastre total, mais cela a fonctionné.

Essayer

<a id="aShowHide" onclick='ToggleDisplay(&#34;<%# DataBinder.Eval(Container.DataItem, "JobCode") %>&#34;);'>Show/Hide</a>

ou

<a id="aShowHide" onclick='ToggleDisplay(&#39;<%# DataBinder.Eval(Container.DataItem, "JobCode") %>&#39;);'>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 = &#34;12&#34;;
            var y = &#34;fmo&#34;;
            hello(x,y)">test</a>
    </body>
</html>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top