Holen Sie sich Element nach ID und legen Sie den Wert in JavaScript fest

Lesezeit: 5 Minuten

Benutzeravatar von jpo
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

Benutzer-Avatar von Xiaodan Mao
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.

    – Xiaodan Mao

    1. Februar 2013 um 15:47 Uhr


  • Mein Code sieht so aus: @Html.HiddenFor(m => m.myfield, new{id = “myId”}) .

    – jpo

    1. Februar 2013 um 15:57

  • 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


Benutzeravatar von mplungjan
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");
}

werde tun, was du willst


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

werde tun, was du willst

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="">

  • 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


Benutzeravatar von Aiyion.Prime
Aiyion.Prime

Keine Antwort brachte die Möglichkeit der Verwendung zum Ausdruck .setAttribute() zusätzlich zu .value():

document.getElementById('some-input').value="1337";
document.getElementById('some-input').setAttribute("value", "1337");

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 Moymys Benutzeravatar
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 Dieterichs Benutzeravatar
Darlan Dieterich

Für jeden Elementtyp können Sie ein bestimmtes Attribut verwenden, um den Wert festzulegen.

Z.B:

<div id="theValue1"></div>
window.document.getElementById("theValue1").innerText = "value div";

<input id="theValue2"></input>
window.document.getElementById("theValue2").value = "value input";

Sie können das Beispiel hier ausprobieren!

Benutzer-Avatar von Peter Mortensen
Peter Mortensen

Probieren Sie es wie folgt aus. Es wird klappen…

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

Benutzer-Avatar von Peter Mortensen
Peter Mortensen

Ich denke, das Problem liegt in der Art und Weise, wie Sie Ihre JavaScript-Funktion aufrufen.

Ihr Code sieht so aus:

<input type="button" onclick="javascript: myFunc(myID)" value="button"/>

meine ID sollte in Anführungszeichen gesetzt werden.

  • Der javascript: Etikett ist völlig unnötig

    – plungjan

    17. Okt. 2018 um 5:56

1454130cookie-checkHolen Sie sich Element nach ID und legen Sie den Wert in JavaScript fest

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy