和在 JavaScript 中innerHTML
有什么区别?innerText
value
12 回答
下面的示例引用了以下 HTML 片段:
<div id="test">
Warning: This element contains <code>code</code> and <strong>strong language</strong>.
</div>
该节点将被以下 JavaScript 引用:
var x = document.getElementById('test');
element.innerHTML
x.innerHTML
// => "
// => Warning: This element contains <code>code</code> and <strong>strong language</strong>.
// => "
这是 W3C 的DOM Parsing and Serialization Specification的一部分。Element
请注意,它是对象的属性。
node.innerText
x.innerText
// => "Warning: This element contains code and strong language."
innerText
由 Microsoft 引入,并且有一段时间不受 Firefox 的支持。2016 年 8 月,innerText
被WHATWG 采用并在 v45 中添加到 Firefox。innerText
为您提供样式感知的文本表示,该表示尝试与浏览器呈现的内容相匹配,这意味着:innerText
适用text-transform
和white-space
规则innerText
修剪行之间的空白并在项目之间添加换行符innerText
不会返回不可见项目的文本
innerText
将返回textContent
从未渲染过的元素,如<style />
`Node
元素的属性
node.textContent
x.textContent
// => "
// => Warning: This element contains code and strong language.
// => "
虽然这是W3C 标准,但 IE < 9 不支持它。
- 不知道样式,因此会返回被 CSS 隐藏的内容
- 不触发回流(因此性能更高)
Node
元素的属性
node.value
这取决于您所针对的元素。对于上面的示例,x
返回一个没有定义属性的HTMLDivElementvalue
对象。
x.value // => null
<input />
例如,输入标签 ( ) 确实定义了一个value
属性,它指的是“控件中的当前值”。
<input id="example-input" type="text" value="default" />
<script>
document.getElementById('example-input').value //=> "default"
// User changes input to "something"
document.getElementById('example-input').value //=> "something"
</script>
从文档:
注意:对于某些输入类型,返回的值可能与用户输入的值不匹配。例如,如果用户在 中输入非数字值
<input type="number">
,则返回的值可能是空字符串。
示例脚本
这是一个显示上述 HTML 输出的示例:
var properties = ['innerHTML', 'innerText', 'textContent', 'value'];
// Writes to textarea#output and console
function log(obj) {
console.log(obj);
var currValue = document.getElementById('output').value;
document.getElementById('output').value = (currValue ? currValue + '\n' : '') + obj;
}
// Logs property as [propName]value[/propertyName]
function logProperty(obj, property) {
var value = obj[property];
log('[' + property + ']' + value + '[/' + property + ']');
}
// Main
log('=============== ' + properties.join(' ') + ' ===============');
for (var i = 0; i < properties.length; i++) {
logProperty(document.getElementById('test'), properties[i]);
}
<div id="test">
Warning: This element contains <code>code</code> and <strong>strong language</strong>.
</div>
<textarea id="output" rows="12" cols="80" style="font-family: monospace;"></textarea>
innerText
但是,与 不同的是,它innerHTML
允许您使用 HTML 富文本并且不会自动对文本进行编码和解码。换句话说,innerText
将标签的内容检索并设置为纯文本,而innerHTML
检索并设置 HTML 格式的内容。
InnerText
属性 html-encodes 内容,转向<p>
等<p>
。如果要插入 HTML 标签,则需要使用InnerHTML
.
简单来说:
innerText
将按原样显示值并忽略HTML
可能包含的任何格式。innerHTML
将显示该值并应用任何HTML
格式。
两者都innerText
返回HTML 元素的innerHTML
内部部分。
和之间的唯一区别innerText
innerHTML
是:innerText
将 HTML 元素(整个代码)作为字符串返回并在屏幕上显示 HTML 元素(作为 HTML 代码),而innerHTML
仅返回 HTML 元素的文本内容。
查看下面的示例以更好地理解。运行下面的代码。
const ourstring = 'My name is <b class="name">Satish chandra Gupta</b>.';
document.getElementById('innertext').innerText = ourstring;
document.getElementById('innerhtml').innerHTML = ourstring;
.name {
color:red;
}
<p><b>Inner text below. It inject string as it is into the element.</b></p>
<p id="innertext"></p>
<br>
<p><b>Inner html below. It renders the string into the element and treat as part of html document.</b></p>
<p id="innerhtml"></p>
var element = document.getElementById("main");
var values = element.childNodes[1].innerText;
alert('the value is:' + values);
例如,要进一步完善它并检索值 Alec,请使用另一个 .childNodes[1]
var element = document.getElementById("main");
var values = element.childNodes[1].childNodes[1].innerText;
alert('the value is:' + values);
innerText
属性将文本内容设置或返回为指定节点及其所有后代的纯文本,而该innerHTML
属性获取并设置元素中的纯文本或 HTML 内容。与 不同innerText
,innerHTML
允许您使用 HTML 富文本,并且不会自动对文本进行编码和解码。
就 而言MutationObservers
,设置会由于浏览器删除节点然后添加一个值为 的新节点而innerHTML
产生突变。childList
innerHTML
如果设置innerText
,characterData
则会生成一个突变。
InnerText
只会返回页面的文本值,每个元素都以纯文本换行,而将返回标签innerHTML
内所有内容的 HTML 内容,并将返回节点列表,顾名思义。body
childNodes
该innerText
属性返回 html 元素的实际文本值,而. 下面的例子:innerHTML
HTML content
var element = document.getElementById('hello');
element.innerText = '<strong> hello world </strong>';
console.log('The innerText property will not parse the html tags as html tags but as normal text:\n' + element.innerText);
console.log('The innerHTML element property will encode the html tags found inside the text of the element:\n' + element.innerHTML);
element.innerHTML = '<strong> hello world </strong>';
console.log('The <strong> tag we put above has been parsed using the innerHTML property so the .innerText will not show them \n ' + element.innerText);
console.log(element.innerHTML);
<p id="hello"> Hello world
</p>
要添加到列表中,innerText
将保留您的text-transform
,innerHTML
不会。
innerhtml 将应用 html 代码
innertext 会将内容作为文本放置,因此如果您有 html 标签,它将仅显示为文本