stops) {
var svgNS = svg.namespaceURI;
var grad = document.createElementNS(svgNS, 'linearGradient');
grad.setAttribute('id', id);
for (var i = 0; i < stops.length; i++) {
var attrs = stops[i];
var stop = document.createElementNS(svgNS, 'stop');
for (var attr in attrs) {
if (attrs.hasOwnProperty(attr))
stop.setAttribute(attr, attrs[attr]);
}
grad.appendChild(stop);
}
var defs = svg.querySelector('defs') || svg.insertBefore( document.createElementNS(svgNS,'defs'), svg.firstChild );
return defs.appendChild(grad);
}
Мне в консоли пишет "svg.querySelector is not a function" Почему так? не может найти defs?
А что у тебя svg? Может селектор неправильный.
сам svg обьект
Вот вызов createGradient($('.rs-svg-container svg'),'gradient',[ {offset:'17%', 'stop-color':'#EFC5C8'}, {offset:'31%','stop-color':'#FAD5CA'}, {offset:'44%','stop-color':'#F3DACD'}, {offset:'58%','stop-color':'#D6E8E9'}, {offset:'100%','stop-color':'#70A8F4'} ]);
Это не должен быть объект. Это должен быть узел для использования метода поиска по дом-дереву.
Делал все по примеру http://jsfiddle.net/2kweq7g4/1/
Это может быть из-за того, что сам svg с библиотеки генерируеться? Изначально его нету на сайте
Скорее всего. В твоём примере свг элемент уже есть в html
Обсуждают сегодня