改变textarea的价值

ben*_*one 1 javascript

我写这个脚本来改变textarea的值,但我没有这样做.我的代码出了什么问题?

<html>
    <head>
        <script type="text/javascript">
            document.getElementsByName("status").innerHTML = "hi";
            document.getElementsByName("status").title= "hi";
            document.getElementsByName("status").placeholder= "hi";
        </script>
    </head>
    <body>
        <textarea placeholder="What's on your mind?" onfocus="window.UIComposer &amp;&amp; UIComposer.focusInstance(&quot;c4d981e9a2c98b0483252333&quot;);" name="status" id="c4d981e9a2c98b0483252333_input" title="What's on your mind?" class="DOMControl_placeholder UIComposer_TextArea">What's on your mind?</textarea>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

Dav*_*mas 5

如果您尝试使用:

var textarea = document.getElementById('c4d981e9a2c98b0483252333_input');
textarea.value = 'hi';
Run Code Online (Sandbox Code Playgroud)

它应该工作.

否则,由于方式getElementsByName有效,您需要为调用提供一个索引(从零开始),以识别您要使用哪个textareas:

var textarea = document.getElementByName('status')[0]; // selects the first element of name 'status'
textarea.value = 'hi';
Run Code Online (Sandbox Code Playgroud)


Que*_*tin 5

两个问题

首先,document.getElementsByName返回NodeList(类似于数组),而不是单个元素.

其次,在元素实际存在之前,您不会延迟JS的执行.所以它无论如何都找不到它.

  1. 改成 document.getElementsByName("status")[0]
  2. 移动<script>元素使其出现 textarea之后.

我也不习惯使用innerHTML修改表单控件.我转而去value.