在尝试访问元素时,我会看到,如果我有一个表单(假设textarea
),并且我想在其中将text
放在其中,我必须使用$("textarea").val();
<</p>
相反,如果我有h1
元素,我必须使用$("h")[0].innerHTML;
为什么这样?h1.val()/textarea.innerHTML do not work
.val()
用于获取/替换jQuery中的输入元素值,js中的替代方案为 .value
。
innerHTML
或jquery的 .html()
用于在元素内获取/替换整个标记,而不是输入元素。
text()
使用与JS innertHTML
几乎相同,只有它在元素内获取/替换文本,而不是所有标签等。它的低价等效于JS innerText
参考链接有关 innerhtml , innertext , val(), text(),,()
textarea.innerHTML
实际上将工作以获取最初呈现的TextArea的HTML内容,而val()
将基于用户输入获得当前值。val()
正如其他人所说的仅在表单元素上起作用的,因此<h1>
不会结果。
$('textarea').on('input', function() {
$('#innerhtml').text(this.innerHTML);
$('#val').text($(this).val());
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
Type in the textarea below to see results:
<br>
<textarea>test123</textarea>
<div>textarea innerHTML:</div>
<div id="innerhtml"></div>
<div>textarea val:</div>
<div id="val"></div>
,因为HTML中的所有输入都有Val(),并且它们可以发送其值以通过表格处理,例如TextArea,text,text,提交,...
但是标签诸如h1,跨度,...不要以形式进行处理,也不会处理,也可能具有内在标签和HTML。
您可以分别使用h1.text()
或h1.html()
分别映射到innerText
和innerHTML
。
至于 val()
映射到 input.value
。
使用jQuery等效物可以使您跨浏览器的兼容性,尽管这可能更像是历史悠久的遗物。新浏览器可能以相同的方式实现这些功能。
作为一般规则:value
用于输入元素,在非输入字段上使用innerHTML
。
.val()用于从jQuery中的输入元素获取值。JavaScript中的替代方案是.value。
.innerhtml用于在某些标签之间放置一些值。因此,innerhtml是dom属性,可以将内容插入元素的指定ID,并且使用.val()您只需从某些输入标签中获得值。