首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >标记没有用appendChild(元素)关闭。(缺少</画布>标记,其他所有标记都正确关闭)

标记没有用appendChild(元素)关闭。(缺少</画布>标记,其他所有标记都正确关闭)
EN

Stack Overflow用户
提问于 2016-11-11 21:58:00
回答 1查看 1K关注 0票数 4

很奇怪的问题。我有一些密码:

代码语言:javascript
运行
复制
var container = document.getElementById("graph"); //container element
console.log("Containers id is " + container.id);  //graph

var element = document.createElement(this.componentType); //"canvas"
element.id = "canvasId";

console.log(element.outerHTML); //<canvas id="canvasId"></canvas>
//container.innerHTML = element.outerHTML;
document.getElementById("graph").appendChild(element);

这条代码看起来很管用。如果

代码语言:javascript
运行
复制
this.componentType = "div" 

代码语言:javascript
运行
复制
this.componentType = "custom" 

然后,它将应用结束标签.

代码语言:javascript
运行
复制
<div id="canvasId"></div> 

代码语言:javascript
运行
复制
<custom id="canvasId"></custom>

但是如果

代码语言:javascript
运行
复制
this.componentType = "canvas"

然后它只会产生开头的标签

代码语言:javascript
运行
复制
<canvas>

没有尾声!尽管如此!console.log显示结束标记!所以我确实得到了一个结束标记,但是无论我是使用appendChild技术还是outerHtml技术,文档都只应用了canvas ()的开始标记。其他标签和自定义标签加载。

我检查了几个类似的问题,并认为答案将是这里的羞怯(在页的中间)。但reddit上的其他人证明了他的代码有效。

代码语言:javascript
运行
复制
var element = document.createElement('canvas'); 
document.body.appendChild(element);
console.log(element.outerHTML); // "<canvas></canvas>"

我检查了Chrome和Safari,两者在开发工具中的结果是相同的。如果是画布,则只显示开始标记。其他人都表现得很得体。

编辑:结果

EN

Stack Overflow用户

回答已采纳

发布于 2016-11-12 00:20:33

叹一口气。所以,在编写了一个简单的html文件之后,我发现了一个丑陋的解决方案:

代码语言:javascript
运行
复制
document.body.innerHTML = "<div><canvas>" + " <canvas></div>"; 

然而,它插入了一个额外的。至少它关闭并使用id'd画布:/

代码语言:javascript
运行
复制
<div><canvas><canvas></canvas></div>

另外,如果我没有在中间添加+,我只得到一个

代码语言:javascript
运行
复制
<div><canvas> </div>

。我在用pyCharm。我认为这是一个pyCharm本地服务器错误,所以我用textEdit编写了一个单独的html文件,但在没有运行服务器的情况下获得了相同的结果。下一站,要在Windows上试一试,看看是不是我的系统有问题。

编辑:确认在中工作。看来我的下一步是更新/刷新。

编辑:包括Teemus解释:

是的,就是这样。我想这是Chrome控制台的一个功能。DOM的HTML是正确创建的。画布没有内容,因此它不需要结束标记(在控制台中,HTML当然需要它)。如果要在新创建的画布元素中添加一些文本,也可以在Chrome工具中看到结束标记。- Teemu

我仍然觉得奇怪的是,它在Windows中正常工作,但是在OSX (Safari & Chrome)中,结果是一样的。所以我想,这个问题已经回答了。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40556861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档