如何获取svg元素类型
how to get svg element type
我有一个问题,我如何获得svg元素的类型,顺便说一句,我使用d3.js
我有类似这个的东西
var selectedElement = svg.select("." + STYLE.selected);
if (selectedElement instanceof SVGCircleElement){
alert("here circle");
selectedElement.style("fill", function(){return d3.rgb(d3.select(this).attr("fill"));});
}
if (selectedElement instanceof SVGPathElement){
alert("here path");
appendMarkerm(selectedElement,false);
}
但是它似乎不起作用,有人能在这里帮忙吗,谢谢!!
***finally, i made it work like this***
var selectedElement = svg.select("." + STYLE.selected);
if (selectedElement.node() instanceof SVGCircleElement){
selectedElement.style("fill", function(){return d3.rgb(d3.select(this).attr("fill"));});
}
if (selectedElement.node() instanceof SVGPathElement){
changeMarkerStyle(selectedElement,false);
}
cauz-selection.node()将返回选择的第一个元素
只需使用tagName
属性:
svg.select("." + STYLE.selected)
.call( function(){
switch( selectedElement.tagName.toLowerCase() ) {
case 'circle':
alert("here circle");
this.style("fill", function(){return d3.rgb(d3.select(this).attr("fill"));});
break;
case 'path':
alert("here path");
appendMarkerm( this, false );
break;
}
});
编辑
d3js的select()
不返回元素本身,而是为其返回一个d3js包装器(非常像jQuery)。因此,最简单的方法是使用call()
方法将函数应用于所有匹配(在只有select()
的情况下,这只是一个)。
相关文章:
- 如何自动保存动态生成的HTML SVG元素
- 将包含SVG元素的HTML转换为图像文件
- SVG元素——处理和选择文本
- SVG元素在转换后会丢失事件侦听器
- 获取以屏幕像素为单位的旋转SVG元素的边界
- 使用JavaScript查找具有特定属性的SVG元素
- 如何使用正则表达式按类获取svg元素
- 将SVG元素拖动到另一个SVG元素上
- 我想隐藏/显示我的SVG元素,同时在anguarJS中使用它
- 如何在svg元素上添加和删除css类
- 在模式框打开之前更改 SVG 元素的颜色,并在框打开时保持该颜色
- 将复杂的 SVG 元素追加到选区
- 使用 JQuery 对 Spin SVG 元素进行动画处理
- 检查直线是否与带有 SVG 元素的圆相交
- 如何添加效果,以便将鼠标悬停在 SVG 元素上使其变大
- 如何将运动模糊尾巴添加到圆圈中的 svg 元素
- SVG 元素作为容器
- 从上传的文件中获取svg元素的宽度
- 是否可以用D3将svg元素添加到开放层映射中
- 单击时将SVG元素替换为另一个