2009-11-03 10 views
6

Ich habe diesen Code aus einem example kopiert. Ich habe es 100 Mal gelesen.Javascript nicht gut gebildeten Fehler in For-Schleife

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

Warum Firefox sagen:

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

UPDATE

Der Fehler nur Firebug angezeigt wird, wenn auf die Seite gedreht wird.

+2

Adaequat - http://jsbin.com/ifuhu/edit –

+2

Ihr Problem gelöst habe, aber ich möchte Sie ermutigen, zu überprüfen, ob es eine native 'map' Implementierung vor Ihrer eigenen zu erklären (der Schatten wird Wenn die nativen Implementierungen, die von modernen Browsern bereitgestellt werden, * wirklich * viel schneller sind. – CMS

Antwort

9

Sie verwenden JavaScript-Code in einer HTML-Seite, die behauptet, vollständig XHTML-kompatibel zu sein. Daher kann das Zeichen < nicht im Javascript angezeigt werden, da es als Anfang eines XHTML-Tags interpretiert werden würde.

Es gibt eine Reihe von Möglichkeiten, dies zu beheben.

Sie könnten die DOCTYPE ändern und es nicht XHTML machen.
Sie könnten das Javascript in einem <![CDATA[ Abschnitt einschließen.
Sie könnten das Javascript in eine separate .js-Datei verschieben.
Sie könnten jedes Auftreten von < mit &lt und alle & mit &amp; entkommen. Ich empfehle diese Option nicht; Es macht Ihren Code unlesbar und wird fast definitiv nicht in IE funktionieren.

+1

Super. Vielen Dank. –

+0

Ich dachte ich hätte es auch mit dem DOCTYPE versucht, aber ich denke nicht. –

1

Wahrscheinlich ist Ihr Fehler nicht in diesem Code, aber etwas darüber tröpfeln Fehler nach unten. Anstatt einen Fehler in diesem Code zu finden, suchen Sie stattdessen nach falsch formatiertem HTML oder Javascript, das diesen Fehler verursachen könnte.

+0

Es gibt kein HTML oder anderes Javascript. –

0

Funktioniert für mich. Bitte posten Sie die vollständige Datei und vergewissern Sie sich, dass Sie Skript-Tags verwenden.

Ich postete eine validating pastebin file (Chetan war technisch nicht gültig), und es funktioniert gut mit Firebug. Daher schlage ich vor, dass Sie mit einer vollständigen Seite des Validierungscodes zurückkehren, die nicht funktioniert.

+0

Das ist die vollständige Datei, abgesehen von verschiedenen Kombinationen von HTML- und Script-Tags. Ich habe es mit einem Skript-Tag versucht. Ich habe versucht, mit einer vollständigen HTML-Seite mit nur einem Skript-Tag im Körper, mit und ohne Doctype. –

0

Wenn ich den folgenden HTML-Code und Ihren Text als "test.js" verwende, bekomme ich auch keine Fehler in Firebug.

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