javascript
  • jquery
  • asp.net-mvc
  • hyperlink
  • string-literals
  • 2016-09-07 4 views 0 likes 
    0

    In meinem MVC Razor Seite, kann ich unter JavaScript-Methode erfolgreich in den Hyperlink aufrufen:Aufruf Javascript Methode in Hyperlink

    <a id="lnkAddAccount" class="btn btn-default btn-sm" data-toggle="modal" 
        onclick='openModal("#div1", "#div2")'>Details 
    </a> 
    

    Wenn jedoch diesen Hyperlink in Zeichenfolge zu verwenden, ich begegne „Syntax: erwartete Ausdruck , Ende des Skripts "Fehler.

    '<a title="Details" class="btn btn-sm btn-outline grey-salsa" 
        onclick=openModal("#div1", "#div2")><i class="fa fa-search"></i></a>' 
    

    Wie Sie diese Javascript-Methode von der letzteren Hyperlink aufrufen?

    +0

    Versuchen Sie zu entkommen: '\ –

    +0

    Könnten Sie bitte als Antwort posten? Danke ... –

    +1

    Es ist das 21. Jahrhundert - stoppe deine Markup mit Verhalten und benutze [Unaufdringliches JavaScript] (https://en.wikipedia.org/wiki/Unobtrusive_JavaScript) –

    Antwort

    1

    Das erste Problem: Sie haben die Anführungszeichen entfernt, die den Wert von onclick umgeben. Die Anführungszeichen sind in HTML optional (werden aber dringend empfohlen). Wenn der Wert jedoch Leerzeichen wie in Ihrem Fall hat, sind die Anführungszeichen obligatorisch.

    Das zweite Problem: Sie haben Anführungszeichen um die Parameter der openModal. Das ist gut, aber wenn Sie die Anführungszeichen hinzufügen, um das erste Problem oben zu lösen, enden Sie mit Anführungszeichen in Anführungszeichen. In diesem Fall müssen Sie die inneren Anführungszeichen mit \ umgehen.

    So haben Sie zwei Möglichkeiten:

    Lösung 1 (nicht empfohlen): Entfernen Sie den Raum, in dem Wert des onclick so brauchen Sie es nicht mit Anführungszeichen zu umgeben:

    '<a title="Details" class="btn btn-sm btn-outline grey-salsa" onclick=openModal("#div1","#div2")><i class="fa fa-search"></i></a>' 
    

    Diese Lösung funktioniert, wird jedoch nicht empfohlen, da dringend empfohlen wird, die Werte in Anführungszeichen zu setzen.

    Lösung 2: den Wert mit Anführungszeichen und die inneren Anführungszeichen mit \ entkommen:

    '<a title="Details" class="btn btn-sm btn-outline grey-salsa" onclick="openModal(\'#div1\', \'#div2\')"><i class="fa fa-search"></i></a>' 
    
    +0

    Vielen Dank für Ihre ausführlichen Erklärungen Die erste Lösung funktioniert, aber die zweite nicht (immer noch der gleiche Fehler). Wie Sie empfohlen haben, möchte ich 2. Lösung verwenden. Irgendeine Idee, um es zu beheben? –

    +0

    Ja, sorry, die inneren Zitate müssen einfache Anführungszeichen sein sie von Ihrem Code und vergaß, sie zu ändern. Sie können nicht die gleiche Art von Zitaten in einander haben. Sehen Sie meine aktualisierte Antwort. –

    +0

    Jetzt funktioniert es wie ein Charme :) –

    1

    Sie benötigen Angebote.

    '<a title="Details" class="btn btn-sm btn-outline grey-salsa" 
        onclick="openModal(\"#div1\", \"#div2\")"><i class="fa fa-search"></i></a>' 
    

    Beachten Sie, dass die inneren Zitate entkommen musste.

    Im Großen und Ganzen ist HTML aus Strings nur unordentlich. Abhängig von deinem Tech Stack gibt es normalerweise bessere Möglichkeiten.

    +0

    Ich habe die Escape-Zeichen genau wie in Ihrem Beispiel, aber immer noch den gleichen Fehler :(Irgendwelche Idee? –

    +0

    Sie müssen Ihre Frage mit genügend Code aktualisieren wir können die Anweisung zu sehen. –

    -1

    Versuchen Sie, diese

    '<a title="Details" class="btn btn-sm btn-outline grey-salsa" onclick="openModal(\"#div1\", \"#div2\")"><i class="fa fa-search"></i></a>' 
    

    mit nicht Zeilenumbruch dazwischen oder auch Verkettung geben Zeilenumbruch

    Verwandte Themen