我什么时候使用.val()vs .innerhtml



在尝试访问元素时,我会看到,如果我有一个表单(假设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()分别映射到innerTextinnerHTML

至于 val()映射到 input.value

使用jQuery等效物可以使您跨浏览器的兼容性,尽管这可能更像是历史悠久的遗物。新浏览器可能以相同的方式实现这些功能。

作为一般规则:value用于输入元素,在非输入字段上使用innerHTML

.val()用于从jQuery中的输入元素获取值。JavaScript中的替代方案是.value。

.innerhtml用于在某些标签之间放置一些值。因此,innerhtml是dom属性,可以将内容插入元素的指定ID,并且使用.val()您只需从某些输入标签中获得值。

最新更新