Ich habe eine Javascript-Funktion, an die ich einen Parameter übergebe. Der Parameter ist die ID eines Elements (ein verborgenes Feld) auf meiner Webseite. Ich möchte den Wert dieses Elements ändern.
function myFunc(variable){
var s= document.getElementById(variable);
s.value = 'New value'
}
Wenn ich dies tue, erhalte ich die Fehlermeldung, dass der Wert nicht gesetzt werden kann, weil das Objekt null ist. Ich weiß aber, dass das Objekt nicht null ist, weil ich es in dem vom Browser generierten HTML-Code sehe. Wie auch immer, ich habe folgenden Code zur Fehlersuche ausprobiert
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 identisch, aber ich erhalte immer noch den Fehler. Aber alles funktioniert gut, wenn ich Folgendes tue
var s= document.getElementById('This-is-the-real-id');
s.value = 'New value'
Wie kann ich das bitte beheben?
EDIT
Das Element, für das ich den Wert einstelle, ist ein verstecktes Feld und die ID wird dynamisch ermittelt, wenn die Seite geladen wird. Ich habe versucht, dies in der Funktion $(document).ready hinzuzufügen, aber es hat nicht funktioniert
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
Vergewissern Sie sich also, dass die Textarea auf der Seite vorhanden ist, und rufen Sie dann myFunc auf. Sie können die Funktion window.onload oder $(document).ready verwenden. Hoffentlich ist es hilfreich.
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");
}
das tun, was Sie wollen
Gegeben
<input id="This-is-the-real-id" type="text" value="">
dann
function setValue(id,newvalue) {
var s= document.getElementById(id);
s.value = newvalue;
}
window.onload=function() {
setValue("This-is-the-real-id","Hello there");
}
das tun, was Sie wollen
function setContent(id, newvalue) {
var s = document.getElementById(id);
if (s.tagName.toUpperCase()==="INPUT") s.value = newvalue;
else s.innerHTML = newvalue;
}
window.addEventListener("load", function() {
setContent("This-is-the-real-id-div", "Hello there");
setContent("This-is-the-real-id-input", "Hello there");
})
<div id="This-is-the-real-id-div"></div>
<input id="This-is-the-real-id-input" type="text" value="">
Versuchen Sie es wie unten, es wird funktionieren...
<html>
<head>
<script>
function displayResult(element)
{
document.getElementById(element).value = 'hi';
}
</script>
</head>
<body>
<textarea id="myTextarea" cols="20">
BYE
</textarea>
<br>
<button type="button" onclick="displayResult('myTextarea')">Change</button>
</body>
</html>