javascript-Maquette修改后如何更新DOM
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript-Maquette修改后如何更新DOM,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1600字,纯文字阅读大概需要3分钟。
内容图文
As mentioned previously,我想使用Maquette作为基本的上标语言.因此,我不想使用maquette.projector.但是,尽管能够将用Maquette制作的SVG对象附加到DOM,但是DOM似乎没有更新.例如,在下面的代码中,我希望能够单击一个按钮来创建一个圆.如果我使用Chrome Dev工具检查DOM,则可以将SVG圆对象添加到DOM中,但是DOM尚未更新.我应该如何更新DOM?
var h = maquette.h;
var dom = maquette.dom;
var svg;
var svgNode;
var root;
var rootDiv;
function addCircle(evt) {
console.log("adding circle");
const c = h('g', [
h('circle#cool.sweet', {cx: '100', cy: '100', r: '100', fill: 'red'}),
]);
const g = dom.create(c).domNode;
svgNode.appendChild(g);
}
document.addEventListener('DOMContentLoaded', function () {
svg = h('svg', {styles: {height: "200px", width: "200px"}})
rootDiv = h('div.sweet', [
svg,
]);
root = dom.create(rootDiv).domNode;
document.body.appendChild(root);
svgNode = root.querySelector("svg");
const button = h('button', {
onclick: addCircle,
}, ["Add circle"]);
const buttonNode = dom.create(button).domNode;
root.appendChild(buttonNode);
});
<script src="//cdnjs.cloudflare.com/ajax/libs/maquette/2.4.1/maquette.min.js"></script>
为什么appendChild不呈现任何内容?
解决方法:
这是一个艰难的过程.圆圈未显示在屏幕上的原因(尽管它已添加到DOM中)与XML命名空间有关.
SVG元素及其后代应获取SVG XML名称空间.当您使用maquette渲染以嵌入式SVG开头的HTML节点时,您不必为此担心.
但是,现在您可以通过创建< g>来开始在SVG内部.节点. Maquette假定您需要“非标准” HTML< g>节点,因为它不知道您在SVG中.
这就是为什么maquette向其DOM.create方法提供第二个参数的原因,您可以按以下方法使用它来解决问题:
const g = dom.create(c,{namespace:’http://www.w3.org/2000/svg’}).domNode;
内容总结
以上是互联网集市为您收集整理的javascript-Maquette修改后如何更新DOM全部内容,希望文章能够帮你解决javascript-Maquette修改后如何更新DOM所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。