2017-09-26 1 views
1

Titel sagt alles, ich setze einen Wert in einer Variablen in einem Javascript. Ich möchte diesen Wert als Wert der einen Zeile in meinem Formular festlegen.Warum kann Javascript den Wert eines HTML-Formularelements nicht festlegen?

hier ist der Code, dieser basiert auf vorherigen ähnlichen Fragen und ihre akzeptierten Antworten, aber irgendwie funktioniert es nicht für mich.

<html> 
<head> 
<script> 
    var counter = 0; 
    var limit = 50; 

    function addInput(divName){ 
     if (counter == limit) { 
       alert("You have reached the limit of adding " + counter + " inputs"); 
     } 
     else { 
       var newdiv = document.createElement('div'); 
       newdiv.innerHTML = "Element " + (counter + 1) + " <input type='text' name='myInputs[]'>"; 
       document.getElementById(divName).appendChild(newdiv); 
       counter++; 
     } 
    } 
</script> 
</head> 

<body> 
<form method="POST" align="center"> 
     <script> 
     var emotion = ""; 
     var raw = Math.random(); 
     var final = Math.ceil(raw * 4); 
     if (final == 1) 
      document.getElementById("someid").value = "A"; 
     else if (final == 2) 
      document.getElementById("someid").value = "B"; 
     else if (final == 3) 
      document.getElementById("someid").value = "C"; 
     else if (final == 4) 
      document.getElementById("someid").value = "D"; 
     </script> 
    <div id="dynamicInput"> 
     Title<br><input type="text" value="" name="myInputs[]" id="someid" disabled> 
    </div> 
    <input type="button" value="Add another event" onClick="addInput('dynamicInput');"> 
    <br> 
    <input type="submit" value="Submit"> 

</form> 


</body> 

</html> 

Ich habe auch versucht, so etwas wie:

document.forms[0].myInputs[0].value="Whatever" 

in dem Script-Tags, aber das funktioniert auch nicht.

Edit_1 Ich erwarte einen Wert im deaktivierten Eingabefeld, direkt unter dem Titel, aber es ist leer. Hier

ist das Bild:

enter image description here

Wie kann ich einen gewissen Wert auf einen Zufallszahlengenerator basiert es?

+0

was bedeutet durch nicht funktioniert? irgendein Fehler? Wert wurde nicht angezeigt? – Se0ng11

+0

@ Se0ng11, siehe die Bearbeitung. Ich entschuldige mich dafür, nicht sehr klar zu sein – Adorn

+1

das Problem hier ist, wie Sie Ihr Skript anordnen, setzen Sie Ihr Skript an der Spitze des HTML, was bedeutet, dass es die js 1. b4 die HTML jemals erscheinen, also das ist das Problem – Se0ng11

Antwort

2

Kontrolle der jsfiddle, ist dies darauf zurückzuführen, wie u ur Skript arrangieren, entweder Sie ur-Code unter dem html bewegen, oder verwenden Sie onload() Ereignis

Beispiel

onload="test()" 

dann werden Sie keine Notwendigkeit, Sorgen zu machen, wo die js

<script> 
     function test(){ 
     var emotion = ""; 
     var raw = Math.random(); 
     var final = Math.ceil(raw * 4); 
     if (final == 1) 
      document.getElementById("someid").value = "A"; 
     else if (final == 2) 
      document.getElementById("someid").value = "B"; 
     else if (final == 3) 
      document.getElementById("someid").value = "C"; 
     else if (final == 4) 
      document.getElementById("someid").value = "D"; 
     } 

</script> 

https://jsfiddle.net/gw04jhoj/

setzen sollten Sie können sich für weitere Informationen darauf beziehen Javascript that executes after page load

0

sollten Sie verwenden:

document.getElementById("someid").value="whatever"; 
+0

hast du Siehst du den Code? Ich habe es versucht, und es funktioniert nicht. – Adorn

1

Ihr Skript ausgeführt wird, bevor diese HTML-Elemente erstellt wurden, und ihr Wert wird so einstellen scheitern, wie document.getElementById („someid“) noch nicht existiert. Das sollte in der Fehlerkonsole im Browser (F12) fehlschlagen.

Versuchen Sie, das Skript zu verschieben, bis Sie die betreffenden HTML-Elemente erstellt haben, oder noch besser, und ändern Sie das Skript nur in execute once the document has loaded.

Verwandte Themen