Прежде всего, document.getElementsByTagName(...)
, document.querySelector(...)
и document.querySelectorAll(...)
все распознают SVG.
Ошибка, которую вы получаете из своего кода, не из-за этого. Проблема в том, что вы используете .trim()
на object
вместо string
. Ну, я понимаю путаницу.
Для обычных элементов .className
возвращает строку. Однако для SVG .className
возвращает объект SVGAnimatedString
.
var div = document.querySelector('div');
var svg = document.querySelector('svg');
console.log('className of div: ', div.className);
console.log('className of svg: ', svg.className);
<div class="normal"></div>
<svg class="special"></svg>
Чтобы получить .className
SVG, есть 3 способа:
1: .className.baseVal
var svg = document.querySelector('svg');
console.log('className of svg: ', svg.className.baseVal);
<svg class="special"></svg>
2: .getAttribute('class')
var svg = document.querySelector('svg');
console.log('className of svg: ', svg.getAttribute('class'));
<svg class="special"></svg>
3: .classList
Обратите внимание, что .classList
возвращает объект, а не строку.
var svg = document.querySelector('svg');
console.log('className of svg: ', svg.classList);
<svg class="special"></svg>