为什么javascript不能设置HTML表单元素的值?

时间:2017-09-26 01:31:11

标签: javascript html

标题说明了一切,我在javascript中的变量中设置了一个值。 我想将该值设置为表单中某行的值。

这是代码,这是基于以前类似的问题和他们接受的答案,但不知何故它对我不起作用。

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

我也尝试过这样的事情:

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

在脚本标记内,但这也不起作用。

Edit_1 我希望在禁用的输入字段中有一些值,就在标题下面,但它是空的。

这是图片:

enter image description here

如何根据随机数生成器获得某些值?

3 个答案:

答案 0 :(得分:2)

检查jsfiddle,这是由于你如何安排你的脚本,你要么移动你的代码在html下面,要么使用onload()事件

示例

onload="test()"

然后你就不用担心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/

您可以参考此信息获取更多信息 Javascript that executes after page load

答案 1 :(得分:1)

您的脚本在创建这些HTML元素之前正在运行,因此设置其值将失败,因为document.getElementById(&#34; someid&#34;)尚未存在。您应该在浏览器的错误控制台中看到此失败(F12)。

尝试移动脚本,直到您创建了相关的HTML元素,或者更好地将脚本更改为execute once the document has loaded

答案 2 :(得分:0)

您应该使用:

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