有人能向我解释一下:将元素附加到目标与将元素分配到目标
Can someone explain to me: appending elements to a target vs. assigning elements to a target?
我制作了两个简单的函数,您可以在这个链接中看到。当单击第一个按钮时,我创建一个h3元素,创建一些文本,将文本附加在元素中,并将元素附加在一个名为results的id中。但是,当你点击第二个按钮时,我几乎会做同样的事情,只是我要求innerHTML的结果,并为它分配h3元素。但是,当我这样做时,我会得到"[object HTMLHeadingElement]"。我想知道为什么我会得到这样的回应,尽管我觉得他们都在做同样的事情
HTML:
<button id="click">
Click
</button>
<button id="click2">
Click 2
</button>
<div id="results">
Hello
</div>
Javascript:
document.getElementById('click').onclick = function()
{
var a = document.createElement('h3');
var b = document.createTextNode('This is some text!');
a.appendChild(b);
document.getElementById('results').appendChild(a);
}
document.getElementById('click2').onclick = function()
{
var a = document.createTextNode('This is some other text');
var b = document.createElement('h3');
var c = "";
b.appendChild(a);
c +=b
document.getElementById('results').innerHTML = c;
}
当您尝试将object
转换为string
值时,其toPrimitive()
方法将在内部调用,并返回object
的字符串表示。在我们的例子中,节点对象的字符串表示将是"[object HTMLHeadingElement]"
。因此,它被指定为#results
元素的innerHTML。
最后,如果要提取元素的原始html字符串,则必须访问其outerHTML
属性。因此,在您的情况下,解决方案是获取创建的元素的outerHTML
,并将其分配给目标的innerHTML
。
document.getElementById('results').innerHTML = b.outerHTML;
你的完整代码是
document.getElementById('click2').onclick = function() {
var a = document.createTextNode('This is some other text');
var b = document.createElement('h3');
b.appendChild(a);
document.getElementById('results').innerHTML = c.outerHTML;
}
相关文章:
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- 任何一种简单的方法都可以将带有onload的元素作为目标
- AngularJs的ng-click$事件将子元素作为目标传递
- 从定位目标中的元素中清除类
- 查找元素的目标
- 指定数组中的元素对,其总和等于特定的目标数字
- 内容以其开头的目标元素
- 在 Jquery 中获取目标元素的属性
- 给定一个带有数字的数组,我如何编写一个递归函数,当 2 个元素加起来为一个目标时,它会在数组中查找索引
- 使用 jQuery 从目标页面而不是当前页面获取元素文本
- AngularJS:如何防止ng-click以子元素为目标
- 有人能向我解释一下:将元素附加到目标与将元素分配到目标
- window.onerror获取元素目标
- 使用next()的jQuery目标元素不起作用
- 以elementsByClassName数组的任何元素为目标
- ReactJS-目标随机元素
- 基于比较子元素内容和目标标题内容的Javascript排序元素
- Ember.js:在模板中呈现谷歌图表(仅当存在时才称为目标DOM元素)
- 在 HTA 中将元素目标发送到 iframe
- 事件委派 - 父元素目标而不是子元素