<script type="text/ecmascript"><![CDATA[
function clone(evt) {
var cloneElement = evt.target.cloneNode(false);
var newx = 100;
var newy = 500;
cloneElement.setAttributeNS(null,"x",newx);
cloneElement.setAttributeNS(null,"y",newy);
document.getElementById("layer1").appendChild(cloneElement);
}
]]></script>
svg看起来像
<g id="layer1" onclick="clone(evt)">
<rect>
<path>
<circle>
<circle>
</g>
矩形就像一个容器,所发生的是该函数克隆矩形并离开其他元素。 那有什么不对?
答案 0 :(得分:10)
两件事:
cloneNode
应该被传递,否则它只会克隆一个元素evt.target
将始终是事件发生的元素,并且g元素永远不会被直接命中,鼠标事件只会从子项中冒泡到那里。如果您想要当前正在处理事件的元素(在您的情况下将是g元素),则可以使用evt.currentTarget
。