Ich versuche den eingegebenen Text mit einer Ajax-Anfrage an den Controller zu übergeben. Aber ich bekomme den Fehler "Uncaught TypeError: Kann die Eigenschaft 'value' von null nicht setzen, als ich versuchte, JS-Datei auszuführen ..
Hier ist der HTMLcode:
%Vor%Hier ist der JS-Code:
%Vor%Bitte helfen Sie mir, das zu beheben.
Sie haben kein Element mit der ID u
. Deshalb tritt der Fehler auf.
Beachten Sie, dass die globale Variable document.getElementById("u").value
bedeutet, dass Sie versuchen, den Wert des Eingabeelements mit dem Namen u
abzurufen, und dass es nicht in Ihrem Code definiert ist.
Das Problem könnte darin bestehen, dass der Code ausgeführt wird. Wenn Sie sich im Kopf eines Dokuments befinden, das JavaScript ausführt, selbst wenn Sie ein Element mit id="u" auf Ihrer Webseite haben, wird der Code ausgeführt, bevor das DOM fertig geladen ist, und somit ist keines der HTML wirklich vorhanden. .. Sie können dies beheben, indem Sie Ihren Code an das Ende der Seite direkt über dem schließenden HTML-Tag verschieben. Dies ist ein guter Grund, jQuery zu verwenden.
Ich wusste, dass ich für diese Antwort zu spät bin, aber ich hoffe, dass dies anderen hilft, denen gegenübersteht und denen gegenübersteht.
Wie Sie geschrieben haben, ist h_url global var wie var = h_url;
, so dass Sie diese Variable überall in Ihrer Datei verwenden können.
h_url=document.getElementById("u").value;
Hier enthält h_url den Wert Ihres Suchfeld-Textwerts, den der Benutzer eingegeben hat.
document.getElementById ("u");
Dies ist die Kennung Ihres Formularfelds mit einer bestimmten ID
.
Ihr Suchfeld ohne id
<input type="text" class="searchbox1" name="search" placeholder="Search for Brand, Store or an Item..." value="text" />
Suchfeld mit id
<input id="u" type="text" class="searchbox1" name="search" placeholder="Search for Brand, Store or an Item..." value="text" />
Wenn Sie auf submit klicken, wird versucht, den Wert von document.getElementById("u").value;
zu holen, was syntaktisch richtig ist, aber Sie haben keine ID definiert, so dass null
zurückgegeben wird.
Achten Sie also darauf, dass Sie bei der Verwendung von Formularfeldern zuerst diese ID definieren und einen anderen Aufgabenbuchstaben eingeben.
Ich hoffe, dass dir das hilft und niemals Cannot set property 'value' of null
Error bekommen.
Das Problem ist, dass Sie kein Element mit der ID u
haben, so dass Sie etwas aufrufen, das nicht existiert.
Um das zu beheben, müssen Sie dem Element eine ID hinzufügen.
Und ich habe auch gesehen, dass Sie einen Wert für die Eingabe hinzugefügt haben, das heißt, die Eingabe ist nicht leer und enthält text . Als Ergebnis wird placeholder
nicht angezeigt.
Schließlich gibt es eine Warnung, die W3Validator am Ende wegen "/" sagt. :
Für das aktuelle Dokument interpretiert der Validator Zeichenketten wie nach alten Regeln, die die Erwartungen der meisten Autoren brechen und somit verwirrende Warnungen und Fehlermeldungen vom Validator verursachen. Diese Interpretation wird durch HTML 4-Dokumente oder andere SGML-basierte HTML-Dokumente ausgelöst. Um die Nachrichten zu vermeiden, entfernen Sie in solchen Kontexten einfach das Zeichen "/" . Hinweis: Wenn Sie erwarten, dass & lt; FOO / & gt; als XML-kompatibles "selbstschließendes" -Tag interpretiert wird, müssen Sie XHTML
oder HTML5 .
Zusammenfassend heißt es, dass Sie den Schrägstrich entfernen müssen. Schreib einfach folgendes:
%Vor%Es scheint diese Funktion zu sein
%Vor%Sie können sich selbst mit 'console.log' überprüfen, welches Objekt Null ist.
Falls jemand auf dieser Seite wegen eines ähnlichen Problems gelandet ist, habe ich festgestellt, dass dieser Fehler auftreten kann, wenn Ihr JavaScript im HEAD ausgeführt wird, bevor Ihr Formular fertig ist. Bewegen Sie Ihr JavaScript an den unteren Rand der Seite, um es für meine Situation zu reparieren.
Tags und Links javascript html