Ich habe eine ASP.NET-Site lokal auf meinem XP-System mit IIS Express ausgeführt. Es gibt eine Live-Version der Site, die auf einem Windows-Server ausgeführt wird.
In den Webseiten verweist das Javascript häufig auf ein Formular auf der Seite mit dem Stil document.formName
, wobei formName
der Name des Formulars ist. Soweit ich weiß, ist dies eine Cross-Browser-Methode, zusammen mit document.forms.formName
und document.forms[0]
und so weiter.
Auf meiner lokalen Entwicklungssite ist die Referenz document.frm1
(ich weiß, schlechte Benennungspraxis) fehlerhaft; es ist undefiniert. Auf der anderen Seite funktioniert document.forms.frm1
gut. Seltsamerweise geschieht dies nicht auf dem Server, obwohl beide Seiten identisch sind, soweit der Code geht. Ich habe mit Firebug und sowohl IE8 als auch Firefox 6 überprüft.
Ein weiterer seltsamer Teil: Überprüfung mit Firebug, document.frm1
ist nicht definiert, aber document.frmClose
(ein anderes Formular) existiert! Huh?!
Jemand hat das schon mal erlebt?
BEARBEITEN 1
Ich habe etwas experimentiert und festgestellt, dass die Eigenschaft id
für document.forms
verwendet wird, während die Eigenschaft name
für document.formName
Ursprüngliche Antwort
Stellen Sie sicher, dass Ihr JavaScript nicht ausgeführt wird, bevor DOM bereit ist. Eine Möglichkeit, um zu helfen, ist, dass Sie Ihr Javascript unten auf der Seite platzieren, oder wenn Sie ein Framework verwenden, müssen Sie den Code in eine ready
-Funktion einfügen:
jQuery: Ссылка
Mootools: Ссылка
Vanille Javascript:
%Vor%Der Grund hierfür ist, dass der lokale Entwicklungsserver die Seite schneller lädt als der Live-Server. Das Timing funktioniert so, dass Sie normalerweise nicht an beiden Stellen den gleichen Fehler erhalten - die Hervorhebung wird hinzugefügt, weil Sie wahrscheinlich den Fehler an beiden Stellen reproduzieren könnten, wenn Sie es mehrmals versuchen würden.
Um das name -Attribut zu erhalten, das zu Ihrem Formular -Element hinzugefügt wurde, müssen Sie ...
hinzufügen %Vor%... zu Ihrer web.config
Die beste Lösung dafür ist unten:
Fügen Sie einfach eine Namenseigenschaft in das form-Tag ein
Wenn Sie den folgenden Code verwenden
Was Sie hier ausführen müssen, ist:
Hinzufügen der Eigenschaft "name" im Formular-Tag wie unten
Tags und Links javascript asp.net