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

时间:2016-12-27 20:11:32

标签: javascript jquery html css

在JQuery尝试访问元素时,我看到如果我有一个表单(比如说textarea),我想在其中获取text,我必须使用{{ 1}}

相反,如果我有一个$("textarea").val();元素,我必须使用h1

为什么会这样? $("h")[0].innerHTML;

5 个答案:

答案 0 :(得分:13)

.val()用于获取/替换jQuery中的输入元素值,JS中的替代值为.value

innerHTML或jQuery' s .html()用于获取/替换元素内的整个标记,而不是输入元素。

text()与JS innertHTML的使用方式几乎相同,只是它获取/替换元素内的文本,而不是所有的标签等。它的贝司等价于JS {{ 1}}

有关 innerHTML innerText val() {{的参考链接3}} text()

答案 1 :(得分:0)

您可以使用分别映射到h1.text()h1.html()的{​​{1}}或innerText

映射到innerHTML的{​​{1}}。

使用jquery等价物为您提供跨浏览器兼容性,尽管这可能更像是一个历史遗迹。新浏览器可能以相同的方式实现这些功能。

作为一般规则:val()用于输入元素,input.value用于非输入字段。

答案 2 :(得分:0)

因为Html中的所有输入都有val(),并且它们可以发送它们的值以由表单处理,例如textarea,text,submit,......

但像h1,span,...这样的标签不参与表格而且不会被处理,而且他们也可能有内部标签和html。

答案 3 :(得分:0)

textarea.innerHTML实际上用于获取textarea的html内容,因为它最初呈现,而val()将根据用户输入获取当前值。 val()正如其他人所说,只适用于表单元素,因此对<h1>没有任何结果。

&#13;
&#13;
$('textarea').on('input', function() {
  $('#innerhtml').text(this.innerHTML);
  $('#val').text($(this).val());
});
&#13;
<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>
&#13;
&#13;
&#13;

答案 4 :(得分:-1)

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

.innerHTML用于在某些标记之间放置一些值。 因此innerHTML是一个DOM属性,用于将内容插入到元素的指定id中,而使用.val(),您只需从某些输入标记中获取值。