<form>
<textarea name="test" value="no">
hi
</textarea>
<input type="submit" />
</form>
嗨或不,是因为?
我问这个问题,因为我看到javascript编辑器在提交时使用textarea.value = html;
来恢复内容,为什么他们这样做,如果value属性没用?
答案 0 :(得分:18)
hi
将被提交。 value
标记没有<textarea>
属性。有关详细信息,请参阅W3School's textarea tag reference。
要回答您为何看到javascript库访问textarea DOM元素的value
属性的问题,您必须明白javascript访问的HTML和DOM(文档对象模型)是2种不同的动物。在HTML中,<textarea>
的值是其内容。在DOM中,textarea节点的值包含在其value
属性中。虽然DOM属性名称通常将1:1映射到HTML属性名称,但它们并不总是如此,这只是一个示例。
答案 1 :(得分:3)
在POST回复中,textarea
会回复innerHTML
的内容。但是,如果您已将值属性设置为textarea
并尝试在JavaScript中获取textarea.value
,则会收到value
属性的内容。
浏览器不应在物理value
中显示textarea
的{{1}}属性,因为它不是标准的。 textarea
代码与textarea
代码的运作方式不同。我认为这样做是因为input
标记不支持换行符。
用户更改的值将是input
值(jQuery中的innerHTML
),而不是html
属性,就像它们使用value
字段一样。
答案 2 :(得分:2)
其他几点 -
支持javascript的所有浏览器都会返回textarea.value的读/写值, 与输入元素一致。但是你不能将 getAttribute ('value')或 setAttribute ('value')与textarea一起使用。
您也可以阅读textarea的'type'属性,但type也不是属性。
如果设置了value属性, textarea.value = string; **它是等效的 ** textarea.appendChild(document.createTextNode(字符串))强> -
textarea不能包含任何其他元素,只能包含文本节点。
textarea中从text设置的文本将是字符串中的文字字符, 设置innerHTML属性将转义任何实体并最小化空格。
答案 3 :(得分:0)
textarea的值是它的内容。 'value'属性对此标记没有标准含义,因此表单或JavaScript将从textarea获得'hi'。这是JavaScript中的演示。
<form>
<textarea name="test" value="no" id='ff'>
hi
</textarea>
<input type="submit" />
</form>
<br>
<a onclick='showVal("ff")'>Show Value</a>
<script>
function showVal(id){
var snib=document.getElementById(id);
alert(snib.value);
}
</script>