javascript - SVG 不像传统的 DOM 那样工作吗?

标签 javascript jquery html css svg

我刚刚开始使用 SVG。我注意到即使使用 SVG 和完全相同的 DOM,结果在显示器上看起来也可能不同。

看看这个 js fiddle( http://jsfiddle.net/ZHukw/ )。它是 SVG Canvas 内的一个简单矩形。

如果您将矩形节点直接复制粘贴到 HTML 中,则该矩形是可见的,但如果您通过 Jquery 添加矩形,它就不会显示在屏幕上。所以最终的 DOM 输出是相同的,但显示不同。

我错过了什么吗?

HTML:

<svg id='svg'>

</svg>

JS:

$('#svg').attr('width',1600)
$('#svg').attr('height',1600)

$('#svg').append('<rect width="200" height="200" fill="black"></rect>')

最佳答案

rect 元素添加为文本的问题是它在错误的命名空间(HTML 而不是 SVG)中被解释。当您静态指定它时,命名空间从上下文中显而易见。

一个修复方法是使用正确的命名空间显式创建节点并附加它。

var el = document.createElementNS('http://www.w3.org/2000/svg', "rect");
el.setAttribute("width", 200);
el.setAttribute("height", 200);
el.setAttribute("fill", "black");
$('#svg').appendChild(el);

关于javascript - SVG 不像传统的 DOM 那样工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18660284/

相关文章:

javascript - 图片没有正确隐藏

div id 上的 javascript 单击关闭父 div 和子 div 元素?

javascript - 使用枚举作为类型/接口(interface)

javascript - 如何使用 tbody 中的数据属性获取输入值?

javascript - 使用名称数组表达 router.param

jquery - .css 显示动画问题

javascript - 延迟 slideDown()/slideUp() - jquery 下拉列表

javascript - 移动删除输入文本框内的字形

javascript - 如何在 JavaScript 中重新定义数组的 + 运算符?

javascript - 无法在滚动条上分配背景颜色