web-dev-qa-db-fra.com

Uncaught SyntaxError: Jeton invalide ou inattendu

J'ai une syntaxe de rasoir comme celle-ci: 

   foreach(var item in model)
 {
<td><a href ="#"  onclick="Getinfo(@item.email);" >6/16/2016 2:02:29 AM</a>  </td>
 }

Mon javascript qui reçoit la demande va comme ceci:

<script type="text/javascript" src="~/Scripts/jquery-1.9.1.js"></script>
<script type="text/javascript">
    function Getinfo(elem) {
        var email = document.getElementById(elem).innerHTML;
    }
</script>

En cliquant sur le lien href, l'erreur suivante apparaît dans la console du navigateur:

"Uncaught SyntaxError: Jeton invalide ou inattendu",

et cette partie est soulignée:

    **</a>  </td>**

Je suis débutant, je suis donc souvent coincé dans la syntaxe. Si c'est le cas, aidez-moi s'il vous plaît.

24
Himaan Singh

Vous devriez passer @item.email entre guillemets, il sera traité comme un argument de chaîne. 

<td><a href ="#"  onclick="Getinfo('@item.email');" >6/16/2016 2:02:29 AM</a>  </td>

Sinon, il est traité comme une variable et une erreur est générée.

39
Satpal

La réponse acceptée fonctionne lorsque vous avez une seule ligne (le courrier électronique) mais si vous avez un 

chaîne multiligne, l'erreur restera.

S'il vous plaît regarder dans cette affaire:

<!-- start: definition-->
@{
    dynamic item = new System.Dynamic.ExpandoObject();
    item.MultiLineString = @"a multi-line
                             string";
    item.SingleLineString = "a single-line string";
}
<!-- end: definition-->
<a href="#" onclick="Getinfo('@item.MultiLineString')">6/16/2016 2:02:29 AM</a>
<script>
    function Getinfo(text) {
        alert(text);
    }
</script>

Changez le guillemet simple (') en backtick (`) dans Getinfo comme ci-dessous et l'erreur sera corrigée:

<a href="#" onclick="Getinfo(`@item.MultiLineString`)">6/16/2016 2:02:29 AM</a>
0
Iman Bahrampour