2015-03-17 15 views
5

So habe ich den Code unten im Header einer Webseite:Erwartete Ausdruck, bekam Ende Skript

<script type="text/javascript"> 
var counter = 2; 
function addNewItemField(divName) { 
    var newDiv = document.createElement("div"); 
    newDiv.id = "item_listing_" + counter; 
    newDiv.innerHTML = "<label for=\"item_" + counter + "\">Item: </label><br />"; 
    newDiv.innerHTML += "<input type=\"text\" id=\"item_" + counter + "_category\" list=\"list_categories\" name=\"items[]\">"; 
    newDiv.innerHTML += "<input type=\"number\" id=\"item_" + counter + "_amount\" mine=\"0.00\" step=\"0.01\" value=\"0.00\" name=\"amounts[]\"><br />"; 
    document.getElementById(divName).appendChild(newDiv); 
    counter++; 
} 
</script> 

Ich versuche, nenne es eine Taste, aber ich bekomme immer einen Fehler Syntax „expected Ausdruck besagt, End of Script. "

Ich habe es durch Linter lief und es fand keine Fehler, ich habe es hundert Mal überprüft und ich kann nicht finden, wo der Fehler ist. Ich hasse es einfach Code zu schreiben und frage "Warum funktioniert das nicht?" aber ich habe keine Ahnung, was los ist, also bin ich ratlos, selbst eine richtige Frage zu stellen.

UPDATE

Hier ist das zugehörige Stück HTML furhter unten auf der Seite, wo die Funktion Anruf getätigt wird und die Peices residieren manipuliert werden:

<div id="item_listings"> 
    <div id="item_listing_1"> 
    <label for="item_1">Item: </label><br /> 
     <input type="text" id="item_1_category" list="list_categories" name="items[]"> 
     <input type="number" id="item_1_amount" min="0.00" step="0.01" value="0.00" name="amounts[]"><br /> 

    </div> 
</div> 
<br /> 
<input id= "add_new_item" type="button" onClick="javascript:addNewItemField("item_listings")" value="Add Another Item">') 
+2

Dies ist ein gutes Beispiel ist, warum sind oft einfache Anführungszeichen für Javascript-Strings empfohlen: Keine Schrägstriche notwendig .. viel einfacher zu lesen! – Damon

+0

Es wird von node.js gehostet und der Text befindet sich bereits in response.write ('...'); Anrufe. Deshalb sind es nur doppelte Anführungszeichen. Ich will nicht dumm klingen, aber ich vermisse immer noch, was das Problem ist, iamnotmaynard. – FatalKeystroke

+1

Es gibt kein Problem mit dem, was Sie gepostet haben – meagar

Antwort

13

onClick="javascript:addNewItemField("item_listings")" ist voller Fehler.

Sie können doppelte Anführungszeichen auf diese Weise nicht mischen. Sie müssen einfache Anführungszeichen innerhalb der Anführungszeichen verwenden oder Sie stoppen das Attribut Ihres HTML-Elements vorzeitig.

Gerade jetzt, analysiert diese als

<input id= "add_new_item" type="button" onClick="javascript:addNewItemField(" 

... von einem Haufen Müll gefolgt.

Sie müssen einfache Anführungszeichen verwenden:

<input id= "add_new_item" type="button" onClick="javascript:addNewItemField('item_listings')" value="Add Another Item"> 
+0

Ich sah mich selbst, Sekunden nachdem ich dieses Bit gepostet hatte. Es funktioniert nach dem Hinzufügen einiger flüchtiger Anführungszeichen (innerhalb eines anderen zitierten Skripts). – FatalKeystroke

+1

@FatalKeystroke Danke. Übrigens hast du mich über 100.000 gedrängt :) – meagar

Verwandte Themen