Citazioni triple?Come posso delimitare un parametro di stringa Javascript con associazione dati in ASP.NET?

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

Domanda

Come delimitare un parametro stringa associato a dati Javascript in un'ancora OnClick evento?

  • Ho un tag di ancoraggio in un controllo Ripetitore ASP.NET.
  • IL OnClick L'evento dell'ancora contiene una chiamata a una funzione Javascript.
  • La funzione Javascript accetta una stringa come parametro di input.
  • Il parametro stringa viene popolato con un valore associato a dati dal ripetitore.

Ho bisogno delle "virgolette doppie" per il file Container.DataItem.
Ho bisogno delle 'virgolette singole' per il file OnClick.

E ne ho ancora bisogno un altro delimitatore (virgolette triple?) per il parametro della stringa di input della chiamata alla funzione Javascript.

Poiché non posso utilizzare nuovamente le "virgolette singole", come posso assicurarmi che la funzione Javascript sappia che il parametro di input è una stringa e non un numero intero?

Senza le virgolette aggiuntive attorno al parametro della stringa di input, la funzione Javascript pensa che sto passando un numero intero.

L'ancora:

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

ed ecco il 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>
È stato utile?

Soluzione

Recentemente ho avuto un problema simile e l'unico modo per risolverlo era utilizzare semplici vecchi codici HTML per singoli (&#39;) e virgolette doppie (&#34;).

Il codice sorgente era ovviamente un disastro totale ma funzionava.

Tentativo

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

O

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

Altri suggerimenti

onclick='javascript:ToggleDisplay("<%# DataBinder.Eval(Container.DataItem, "JobCode")%> "); '

Utilizzare come sopra.

Senza le virgolette aggiuntive attorno al parametro della stringa di input, la funzione Javascript pensa che sto passando un numero intero.

Puoi eseguire qualche rudimentale funzione di stringa per forzare JavaScript a trasformarlo in una stringa?Come

value = value + ""

Prova a inserire il testo extra all'interno del blocco di script lato server e a concatenarlo.

onclick='<%# "ToggleDisplay(""" &  DataBinder.Eval(Container.DataItem, "JobCode") & """);" %>'

Modificare:Sono abbastanza sicuro che potresti usare semplicemente le virgolette doppie anche al di fuori del blocco di script.

Passaggio di variabile alla funzione senza virgolette singole o doppie

<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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top