为什么我不能通过setAttribute设置textarea的value属性?

Why cannot I set the value attribute of texarea by setAttribute?

<textarea value="hello" id="id1"></textarea>

上面的文本区域没有显示“你好”。

document.getElementById('id1').setAttribute("value", "hello");
<textarea value="hello" id="id1"></textarea>

这个文本区域也不显示“你好”。但是下面的确实显示了“你好”,为什么?

document.getElementById('id1').value = "hello";
<textarea value="hello" id="id1"></textarea>

setAttribute 非常适合 <input> 元素:

document.getElementById('id1').setAttribute("value", "hello");
<input value="" id="id1" />

A textarea 没有要使用 setAttribute 设置的值属性 - 它有一个值 属性,您可以使用 element.value

直接设置

比较

<textarea>value</textarea>

<input value="value"/>

其中值是输入元素的属性

在DOM中,inputtextarea元素有一个defaultValue属性。如果用户未键入任何内容或表单已重置,这将控制元素中显示的内容。

对于 input 元素,defaultValue 属性 映射到 value 属性 .

对于 textarea 元素,defaultValue 属性 映射到元素的 文本内容 textarea 个元素没有 value 属性


两种元素都有一个value属性代表当前值。

这与输入元素 value 属性 具有相同的名称是不幸的,并且是相当混乱的来源。