2009-11-03 10 views
6

He copiado este código de example. Lo he leído 100 vecesError Javascript no bien formado en for loop

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

¿Por qué dice Firefox:

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

ACTUALIZACIÓN

El error sólo se muestra cuando Firebug se enciende por la página.

+2

funciona bien - http://jsbin.com/ifuhu/edit –

+2

Su problema se resolvió, pero les animo a comprobar si hay una aplicación nativa map' 'antes de declarar su propia (que será la sombra el nativo si estuviera disponible), las implementaciones nativas proporcionadas por navegadores modernos son * realmente * mucho más rápidas. – CMS

Respuesta

9

Está utilizando un código Javascript en una página HTML que afirma ser totalmente compatible con XHTML. Por lo tanto, el carácter < no puede aparecer en el Javascript, ya que se interpretaría como el comienzo de una etiqueta XHTML.

Hay varias maneras de arreglar esto.

Puede cambiar el DOCTYPE y hacerlo no XHTML.
Puede adjuntar el Javascript en una sección <![CDATA[.
Puede mover el Javascript a otro archivo .js.
Puede escapar de cada aparición de < con &lt y cada & con &amp;. No recomiendo esta opción; hará que tu código sea ilegible y casi definitivamente no funcionará en IE.

+1

Impresionante. Gracias. –

+0

Pensé que había probado el DOCTYPE también, pero supongo que no. –

1

Es probable que su error no esté en este código, pero hay algo sobre él que filtra los errores hacia abajo. Por lo tanto, en lugar de encontrar un error en este código, busque el HTML o javascript mal formado que podría estar causando este error.

+0

No hay HTML u otro Javascript. –

0

Funciona para mí. Publique el archivo completo y asegúrese de estar usando etiquetas de script.

He publicado un validating pastebin file (Chetan's técnicamente no era válido), y funciona bien con Firebug. Así que sugiero que vuelvas con una página completa de validación de código que no funciona.

+0

ESTE ES el archivo completo, aparte de varias combinaciones de html y etiquetas de script. Lo intenté con solo una etiqueta de script. Lo he intentado con una página HTML completa que incluye solo una etiqueta de script en el cuerpo, con y sin un doctype. –

0

Si uso el siguiente HTML y su texto como "test.js", tampoco consigo errores en Firebug.

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