Holen Sie sich Element nach ID und legen Sie den Wert in JavaScript fest
Lesezeit: 5 Minuten
jpo
Ich habe eine JavaScript-Funktion, an die ich einen Parameter übergebe. Der Parameter stellt die ID eines Elements (ein verstecktes Feld) auf meiner Webseite dar. Ich möchte den Wert dieses Elements ändern.
function myFunc(variable) {
var s = document.getElementById(variable);
s.value="New value"
}
Wenn ich das mache, erhalte ich die Fehlermeldung, dass der Wert nicht festgelegt werden kann, da das Objekt null ist. Aber ich weiß, dass das Objekt nicht null ist, weil ich es im vom Browser generierten HTML-Code sehe.
Wie auch immer, ich habe versucht, den folgenden Code zum Debuggen zu verwenden
function myFunc(variable) {
var x = variable;
var y = 'This-is-the-real-id'
alert(x + ', ' + y)
var s = document.getElementById(x);
s.value="New value"
}
Wenn die Warnmeldung angezeigt wird, sind beide Parameter gleich, ich erhalte jedoch weiterhin die Fehlermeldung. Aber wenn ich das tue, funktioniert alles gut
var s = document.getElementById('This-is-the-real-id');
s.value="New value"
Wie kann ich das beheben?
Das Element, für das ich den Wert festlege, ist ein ausgeblendetes Feld und die ID wird beim Laden der Seite dynamisch festgelegt. Ich habe versucht, dies im hinzuzufügen $(Dokument).bereit Funktion, aber es hat nicht funktioniert.
Mal sehen, wo Sie die Funktion aufrufen (die, dem von Ihnen bereitgestellten Code nach zu urteilen, keinen Namen hat).
– Anthony Grist
1. Februar 2013 um 15:09
Was ist variabel? Und wie ruft man die unbenannte Funktion auf?
– plungjan
1. Februar 2013 um 15:09
Wenn Sie eine Diagnose durchführen alert() oder console.log() In solchen Fällen sollten Sie das tun stets Umschließen Sie Werte mit einigen Markierungszeichen, damit Sie erkennen können, ob die Zeichenfolgen vereinzelte Leerzeichen enthalten. So: alert("[" + x + "], [" + y + "]");
– Spitze
1. Februar 2013 um 15:12
Bitte zeigen Sie ein Beispiel dafür auf jsfiddle.net – was Sie fragen, ergibt keinen Sinn.
– Dennis
1. Februar 2013 um 15:17 Uhr
Xiaodan Mao
Wenn myFunc(Variable) ausgeführt wird, bevor der Textbereich auf der Seite gerendert wird, erhalten Sie den Null-Ausnahmefehler.
<html>
<head>
<title>index</title>
<script type="text/javascript">
function myFunc(variable) {
var s = document.getElementById(variable);
s.value = "new value";
}
myFunc("id1");
</script>
</head>
<body>
<textarea id="id1"></textarea>
</body>
</html>
<!-- Error message: Cannot set property 'value' of null -->
Stellen Sie also sicher, dass Ihr Textbereich auf der Seite vorhanden ist, und rufen Sie dann auf myFunc. Du kannst den … benutzen window.onload oder $(Dokument).bereit Funktion.
Ich erstelle das ausgeblendete Feld und dann die Schaltfläche, die die Funktion ausführt, die den Wert des ausgeblendeten Felds festlegt. Die ID wird jedoch dynamisch festgelegt. Ich habe versucht, diese Funktion in die Funktion $(document).ready einzufügen, aber es tritt das gleiche Problem auf.
– jpo
1. Februar 2013 um 15:37 Uhr
@jpo Wenn die ID dynamisch festgelegt wird, sollten Sie auch sicherstellen, dass myFunc aufgerufen wird, nachdem die ID festgelegt wurde. Sie können versuchen, myFunc in der Funktion aufzurufen, die die ID festlegt.
Die Funktion wird nur aufgerufen, wenn auf die Schaltfläche geklickt wird, und dies geschieht erst, nachdem die Seite geladen wurde. Wie kann ich sonst sicherstellen, dass alles passiert, bevor auf die Schaltfläche geklickt wird?
– jpo
1. Februar 2013 um 15:58
@jpo In onclick=”javascript: myFunc(myID)” sollte myID in einfache Anführungszeichen gesetzt werden.
– Xiaodan Mao
1. Februar 2013 um 16:05 Uhr
plungjan
Gegeben
<div id="This-is-the-real-id"></div>
Dann
function setText(id, newvalue) {
var s = document.getElementById(id);
s.innerHTML = newvalue;
}
window.onload = function() { // Or window.addEventListener("load", function() {
setText("This-is-the-real-id", "Hello there");
}
Genau das, was ich dachte. Aber meine ID und Einstellung dynamisch. Aber ich habe die gleiche Idee verwendet. Aber wenn die Funktion I aufgerufen wird, kann das Dokument das Element mit der angegebenen ID nicht finden
– jpo
1. Februar 2013 um 15:18
Wir müssen den HTML-Code und den Event-Handler (onclick oder was auch immer) sehen.
– plungjan
1. Februar 2013 um 15:18
Aiyion.Prime
Keine Antwort brachte die Möglichkeit der Verwendung zum Ausdruck .setAttribute() zusätzlich zu .value():
Dieser Nachtrag ändert tatsächlich den Inhalt des Werts in der Seitenquelle, was wiederum zu einer Aktualisierung des Werts führt form.reset()-nachweisen.
Unhöflich? Oder habe ich hier einfach eine SO-Regel übersehen?
– Aiyion.Prime
19. März um 17:19 Uhr
Dah Moymy
Verwenden:
<html>
<head>
<script>
function updateTextarea(element)
{
document.getElementById(element).innerText = document.getElementById("ment").value;
}
</script>
</head>
<body>
<input type="text"
value="Enter your text here."
id = "ment"
style = " border: 1px solid grey; margin-bottom: 4px;"
onKeyUp="updateTextarea('myDiv')" />
<br>
<textarea id="myDiv" ></textarea>
</body>
</html>
Darlan Dieterich
Für jeden Elementtyp können Sie ein bestimmtes Attribut verwenden, um den Wert festzulegen.
Mal sehen, wo Sie die Funktion aufrufen (die, dem von Ihnen bereitgestellten Code nach zu urteilen, keinen Namen hat).
– Anthony Grist
1. Februar 2013 um 15:09
Was ist variabel? Und wie ruft man die unbenannte Funktion auf?
– plungjan
1. Februar 2013 um 15:09
Wenn Sie eine Diagnose durchführen
alert()
oderconsole.log()
In solchen Fällen sollten Sie das tun stets Umschließen Sie Werte mit einigen Markierungszeichen, damit Sie erkennen können, ob die Zeichenfolgen vereinzelte Leerzeichen enthalten. So:alert("[" + x + "], [" + y + "]");
– Spitze
1. Februar 2013 um 15:12
Bitte zeigen Sie ein Beispiel dafür auf jsfiddle.net – was Sie fragen, ergibt keinen Sinn.
– Dennis
1. Februar 2013 um 15:17 Uhr