2015-03-17 17 views
5

così ho il codice qui sotto nell'intestazione di una pagina web:Previsto espressione, ha ottenuto fine dello script

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

provo definendolo tramite un pulsante, ma ottengo sempre un errore di sintassi che indica "espressione atteso, fine del copione. "

L'ho eseguito tramite Linter e non ho trovato errori, l'ho rivisto centinaia di volte e non riesco a trovare dove sia l'errore. Odio solo pubblicare il codice e chiedere "Perché questo non funziona?" ma non ho idea di cosa stia succedendo, quindi non riesco nemmeno a fare una domanda appropriata per questo.

UPDATE

Ecco il pezzo associato di HTML furhter in basso nella pagina in cui la chiamata di funzione è fatto e le peices manipolati risiedono:

<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

Questo è un grande esempio perché le virgolette singole sono spesso raccomandati per Javascript stringhe: Nessun backslash necessario .. molto più facile da leggere! – Damon

+0

È ospitato tramite node.js e il testo è già all'interno di response.write ('...'); chiamate. Ecco perché sono tutte doppie virgolette. Non intendo sembrare stupido, ma mi manca ancora qual è il problema iamnotmaynard. – FatalKeystroke

+1

Non c'è nessun problema con quello che hai postato – meagar

risposta

13

onClick="javascript:addNewItemField("item_listings")" è pieno di errori.

Non è possibile combinare le virgolette doppie in questo modo. È necessario utilizzare le virgolette singole tra virgolette o interrompere anticipatamente l'attributo dell'elemento HTML.

In questo momento, questa analizza come

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

... seguito da un mucchio di spazzatura.

è necessario utilizzare le virgolette singole:

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

L'ho visto solo io dopo aver postato quel bit. Funziona dopo l'aggiunta di alcune virgolette singole di escape (che si trovano all'interno di un altro script citato). – FatalKeystroke

+1

@FatalKeystroke Grazie. Per inciso, mi hai spinto oltre 100.000 :) – meagar

Problemi correlati