2009-11-03 1 views
6

ho copiato questo codice da un example. L'ho letto 100 volte.Javascript errore non-ben formato nel ciclo for

Array.prototype.map = function(fn) { 
    var r = []; 
    var l = this.length; 
    for(var i = 0; i < l; i++) { 
     r.push(fn(this[i])); 
    } 
    return r; 
}; 

Perché Firefox dice:

not well-formed 
file:///some/path.html       Line: 5 
    for(var i = 0; i < l; i++) { 
    -------------------^ 

UPDATE

L'errore viene visualizzata solo quando Firebug è attivato per la pagina.

+2

funziona bene - http://jsbin.com/ifuhu/edit –

+2

Il tuo problema ottenuto risolto, ma vi avrebbe incoraggiato per verificare se v'è un'implementazione nativa map' 'prima di dichiarare il proprio (che sarà ombra quello nativo se fosse disponibile), le implementazioni native fornite dai browser moderni sono * veramente * molto più veloci. – CMS

risposta

9

Si utilizza il codice JavaScript in una pagina HTML che dichiara di essere pienamente conformi alle specifiche XHTML. Pertanto, il carattere < non può essere visualizzato nel Javascript, poiché verrebbe interpretato come l'inizio di un tag XHTML.

Ci sono diversi modi per risolvere questo problema.

è possibile modificare il DOCTYPE e renderlo non XHTML.
È possibile racchiudere il Javascript in una sezione <![CDATA[.
È possibile spostare il Javascript in un file .js separato.
Si poteva sfuggire ogni occorrenza di < con &lt ed ogni & con &amp;. Non consiglio questa opzione; renderà il tuo codice illeggibile e quasi sicuramente non funzionerà in IE.

+1

Fantastico. Grazie. –

+0

Pensavo di aver provato anche il DOCTYPE, ma immagino di no. –

1

Probabilmente il vostro errore non è in questo codice, ma qualcosa di sopra di esso gocciola verso il basso gli errori. Quindi, invece di trovare un errore in questo codice, guarda sopra per HTML o JavaScript non valido che potrebbe causare questo errore.

+0

Non c'è HTML o altro Javascript. –

0

Lavori per me. Per favore pubblica il file completo e assicurati di utilizzare i tag script.

Ho inviato un validating pastebin file (Chetan's non era tecnicamente valido) e funziona perfettamente con Firebug. Quindi ti suggerisco di tornare con una pagina intera di codice di convalida che non funziona.

+0

Questo è il file completo, oltre a varie combinazioni di tag html e script. Ho provato solo con un tag script. Ho provato con una pagina HTML completa includendo solo un tag script nel corpo, con e senza un doctype. –

0

Se utilizzo il seguente codice HTML e il testo come "test.js", anch'io non ho errori in Firebug.

<html> 
<head> 
    <script type="text/javascript" src="test.js"></script> 
</head> 
<body> 
    test 
</body> 
</html>