UncoughtaxError: ongeldig of onverwacht token

Ik heb een scheermes syntaxis als volgt:

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

Mijn javascript die het verzoek ontvangt, gaat als volgt:

<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>

Als u op de HREF-link klikt, ontvang ik de volgende fout in de console van de browser:

“UncoughtyntaxEror: ongeldig of onverwacht token”,

En dit deel is onderstreept:

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

Ik ben een beginner, dus ik kom veel vast in de syntaxis. Als het dat is, help me dan alstublieft.


Antwoord 1, Autoriteit 100%

U moet doorgeven @item.emailin offertes, dan wordt deze behandeld als string-argument

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

Anders wordt het behandeld als variabele dus fout wordt gegenereerd.


Antwoord 2, Autoriteit 19%

Het geaccepteerde antwoordwerk wanneer u een enkele lijntekenreeks hebt (de e-mail), maar als u een

hebt

Multiline-reeks, de fout blijft.

Zoek deze kwestie:

<!-- 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>

Wijzig de single-quote (‘) naar backtick (`) in GetInfo zoals hieronder en fout wordt vastgesteld:

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

Antwoord 3

Ik heb ook een probleem gehad met multiline-snaren in dit scenario. @ Iman’s Backtick (`) Solution werkte geweldig in de moderne browsers, maar veroorzaakte een ongeldige tekenfout in Internet Explorer. Ik moest het volgende gebruiken:

'@item.MultiLineString.Replace(Environment.NewLine, "<br />")'

Dan moest ik de koets weer in de JS-functie terugzetten. Moest Regex gebruiken om meerdere koetsrendementen te verwerken.

// This will work for the following:
// "hello\nworld"
// "hello<br>world"
// "hello<br />world"
$("#MyTextArea").val(multiLineString.replace(/\n|<br\s*\/?>/gi, "\r"));

Other episodes