也許我不理解你,但是做什麼,我明白你問是很容易的:
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);
我不認爲你爲什麼要一個RegExp很明顯以及爲什麼你想獲得屬性 - 你是否想修改現有路徑的一部分? –
否我想更改路徑的「d」屬性。 – user3143218