document.getElementById("test").value和document.getElementById("test").innerHTML有什么区别?

6
document.getElementById("test").value

document.getElementById("test").innerHTML

第一个是指地址,第二个是指存储在该地址的值吗?此外,我在哪里可以找到关于"value"属性的文档?

w3schools网站有一个很好的HTML DOM参考 - Brian Rogers
@BrianRogers - 请不要推荐w3schools。请参考http://w3fools.com了解原因。 - Oded
@Oded - 我发现他们的HTML DOM参考资料非常有用。如果你对该网站感到如此强烈,那么向HTML DOM推荐其他参考资料将更具建设性。 - Brian Rogers
@BrianRogers - 当然。MDN非常好。事实准确。 - Oded
5个回答

10

.value用于获取表单元素(inputselecttextarea)的当前值,而.innerHTML基于元素包含的DOM节点构建一个HTML字符串。

举个简单的例子,可以前往JS Fiddle demo,输入新值到input中,然后移出该输入框。

测试使用以下JavaScript代码:

document.getElementById('input').onchange = function(){
    alert('innerHTML: ' + document.getElementById('input').innerHTML + '; whereas value: ' + document.getElementById('input').value);
};

(在下面的评论中,am not i am 留言后,上述文本已更新。)


2
我希望你能说“*.innerHTML基于元素包含的DOM节点构建HTML字符串”*(或类似的内容),因为DOM节点严格来说没有任何“HTML”内容。 - user1106925
1
@amnotiam,同意。我的文本已更新,感谢您的澄清。=) - David Thomas

3
一些HTML元素有一个名为"value"的属性,例如,而其他一些元素则没有。如果你想修改它们,可以使用DOM属性(与Javascript一起使用)innerHTML(如果它们有任何内容)。此属性表示元素的内容,因此可用于接受嵌套其他元素的元素,如

3
许多HTML元素都可以拥有一个ID,因此每个元素的定义value将会改变。
例如,<input type=text>将给出其中的文本,因此value实际上是该元素理解的值。
innerHTML则指该元素内部的HTML代码。例如,<TR>将包含其子TD以及其他任何内容。 valueinnerHTML(通常情况下)既可读也可写。

2

这与一些标签的属性相关,其中有些标签基于它们的属性工作,而其他标签则基于开闭标签之间的文本工作。

.value 检索标签 value 属性设置的任何值。 .innerHTML 检索开闭标签之间的任何内容。

例如,如果HTML标签是
<input type="text" value="Enter name here" id="user_name" />
并且您使用JavaScript
var name = document.getElementById('user_name').value
将声明一个变量 name 并赋予它值 "Enter name here"(假设用户没有更改它)。另一方面,如果您的HTML如下所示
<div id="abc">blah blah</div>
那么您需要使用
var text = document.getElementById('abc')
这将会把变量 text 设置为 "blah blah"。


0
document.getElementByid('test').value

用于在文本字段中赋值。例如:

<input type="text" id="test" name="test">

现在它将值放在这个文本字段中。

document.getElementByid('test').innerHTML 用于在指定区域中赋值。例如

<div id="test">
</div>

现在它会打印出 div 区域内的值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接