2016-12-18 2 views
-2

Der folgende Code wirft eine nicht erfasster Syntax: Unexpexted Kennung auf der Linie 3Uncaught Syntax: Uncexpected Kennung

class viewer { 

public viewer() {} 

public void show(int id) { 
    $(".previewItem").fadeOut("slow"); 
    $(".container").append("<img src='../img/portfolio/IMG'" +id +".jpg class='viewerIm'/>"); 
} 
} 

Ich verstehe nicht, warum, könnte jemand vielleicht lassen Sie mich wissen?

+0

Ihre Syntax ist falsch. Erfahren Sie mehr über Javascript-Klassen (sie haben keine Zugriffsmodifikatoren) – SLaks

+2

öffentlichen void ?? klingt nicht wie Javascript – Deep

Antwort

2

Es gibt kein public oder void Schlüsselwort in Javascript. Sieht aus, als mischst du verschiedene Sprachen.

Wenn Sie keine Klasse, wollen aber nur ein einzelnes Objekt, könnte Ihr Code wie folgt aussehen:

var viewer = { 

    show : function (id) { 
    $(".previewItem").fadeOut("slow"); 
    $(".container").append("<img src='../img/portfolio/IMG" +id +".jpg' class='viewerIm'/>"); 
} 

} 

nun die Funktionen von Klassennamen zugreifen wie

erfolgt
viewer.show(100); 
+0

@ T.J.Crowder nur versucht, den Unterschied zu zeigen .. –

+0

@ T.J.Crowder behoben .. Denken Sie immer noch, es ist nicht zu markieren? –

+0

@TJCrowder Ich habe den Kommentar geändert, um es zu einem Objekt zu sagen .. Da du deine Antwort bereits mit korrekter Syntax gepostet hast, denke ich, dass ich das so lassen kann ... oder denkst du, dass es fehlgeleitete –

2

Sie haben gesagt, dass Sie JavaScript schreiben und jQuery verwenden, aber der von Ihnen veröffentlichte Code ist Java, nicht JavaScript. (Es wäre sogar ein gültiger Java-Code, wenn wir von einem statischen Import ausgehen, der eine $-Methode liefert.) Sie sind völlig verschiedene (obwohl oberflächlich ähnliche) Sprachen.

Ich empfehle Ihnen, JavaScript zu lesen.

Wenn Sie wirklich eine Klasse möchten (z. B. werden Sie mehrere Instanzen erstellen), lesen Sie weiter; Wenn nicht, wenn Sie nur ein einziges viewer Objekt wünschen, siehe Rajshekar Reddy's answer.

Um eine Klasse in der modernen (ES2015 und später) JavaScript zu erstellen, ist Ihr Code weitgehend richtig, wenn wir nur public und int entfernen und die Definition des Konstruktor ändern:

// ES2015+ 
class viewer { 

    constructor() {} 

    void show(id) { 
     $(".previewItem").fadeOut("slow"); 
     $(".container").append("<img src='../img/portfolio/IMG'" +id +".jpg class='viewerIm'/>"); 
    } 
} 

Aber beachten Sie, dass es immer noch sind viele Browser da draußen, die ES2015 class Syntax noch nicht behandeln kann.

In ES5, es so sein würde:

// ES5 and earlier 
function viewer() { 
} 
viewer.prototype.show = function show(id) { 
    $(".previewItem").fadeOut("slow"); 
    $(".container").append("<img src='../img/portfolio/IMG'" +id +".jpg class='viewerIm'/>"); 
}; 

Und das in beiden Fällen beachten (und in Java und C#), die überwältigende Konvention ist eine Klasse mit einem Kapital zu nennen erster Buchstabe, z , nicht viewer.

Verwandte Themen