JavaScript:路径的自定义函数's”;d”;属性
JavaScript: Custom Function For Path's "d" attribute
我正在尝试构建一个函数,该函数可以在整个JavaScript中重复使用,用于编辑SVG路径的"d"属性。
目前,我可以获取属性并对其进行更改,但这是临时的。我想创建一个可重用的函数。
例如,如果我有一个类似这样的SVG:
<svg>
<path class="myPath" d="M25.914,13.143C25.477,8.58,21.678,5,17,5" />
</svg>
为了用JavaScript编辑"d"属性,我这样做:
var element = document.querySelector(".myPath");
element.setAttribute("d", "M475.385...");
我如何将这种工作流程转化为可重用的功能?该功能应执行以下操作:
- 按类名查询SVG
- 按类名查询SVG的路径元素
- 获取该路径的"d"属性
- 更改"d"属性
我希望能够设置它,这样我就可以简单地调用一个函数来实现这一点,我所需要做的就是在末尾设置"d"属性。我相信最好的方法是通过某种自定义RegEx。
也许我不理解你,但做我理解你的要求很容易:
http://jsfiddle.net/m9K5d/
function setPath (svgClass, pathClass, newPath) {
var element = document.querySelector('.' + svgClass + ' .' + pathClass);
element.setAttribute("d", newPath);
}
// Assuming you add a class "mySvg" to the <svg> element
setPath('mySvg', 'myPath', 'M475.385,13.143C25.477,8.58,21.678,5,17,5');
或者,如果你希望重用相同的类而不需要每次都提供它们,你可以这样做:
http://jsfiddle.net/YD4R6/
function getPathSetter (svgClass, pathClass) {
return function (newPath) {
var element = document.querySelector('.' + svgClass + ' .' + pathClass);
element.setAttribute("d", newPath);
};
}
// Assuming you add a class "mySvg" to the <svg> element
var ps = getPathSetter('mySvg', 'myPath');
ps('M375.385,13.143C25.477,8.58,21.678,5,17,5');
setTimeout(function () {
ps('M75.385,13.143C25.477,8.58,21.678,5,17,5');
}, 3000);
或者,特别是如果你想扩展你可以用类做的事情,你可以做:
http://jsfiddle.net/KD2DL/1/
function Path (svgClass, pathClass) {
this.svgClass = svgClass;
this.pathClass = pathClass;
}
Path.prototype.getPathElement = function () {
return document.querySelector('.' + this.svgClass + ' .' + this.pathClass);
};
Path.prototype.set = function (newPath) {
var element = this.getPathElement();
element.setAttribute("d", newPath);
};
Path.prototype.get = function () {
var element = this.getPathElement();
return element.getAttribute("d");
};
// Assuming you add a class "mySvg" to the <svg> element
var p = new Path('mySvg', 'myPath');
p.set('M375.385,13.143C25.477,8.58,21.678,5,17,5');
setTimeout(function () {
p.set('M75.385,13.143C25.477,8.58,21.678,5,17,5');
alert(p.get());
}, 3000);
相关文章:
- 表单's的action属性-如何在javascript中指定完整的应用程序路径
- 未捕获的InvalidValueError:setIcon:不是字符串;并且没有url属性;并且没有路径属性
- 为什么html src属性中的相对url是因为Javascript函数中的完整路径
- React.js.Error:<路径>属性d
- 使用 D3,如何设置轴路径和线条的属性(“填充”、“无”),而不是文本(不编辑样式表)
- 错误:<路径>属性 d=“MNaN,NaNA5,5 0 1,1 NaN,NaNL0,0Z”的值无效
- 拉斐尔路径中的自定义属性
- jQuery 从数据属性获取路径
- 谷歌地图:- 无效值错误:设置图标:不是字符串;并且没有网址属性;并且没有路径属性
- C3 时间序列图表给出错误 <路径>属性的值无效
- 设置属性内的 Raphaeljs 路径 ID
- Javascript - 检索对象属性路径
- 如何在 Javascript 中使用元素的 CSS 路径将 CSS 属性应用于元素
- 硒:借助链接等属性获取元素的路径
- 我应该如何在 Angular ui 路由器中创建模板网址属性的路径
- 如果我有一个指向所需属性的路径数组,如何设置为对象的属性
- 从类似对象路径的数据中检索属性#0.elements.#0.name”;
- Breeze 1.4.0按嵌套属性路径排序时的内联计数
- 当使用属性路径扩展时,registerEntityTypeCtor初始化器似乎不会触发
- 递归列出JSON中的所有对象属性路径