Я пытаюсь заполнить два элемента SVG с атрибутами стиля. Один с strokedashoffset, а другой с transform: rotate. Это мой ожидаемый css:
<circle class="progressbar-line-timer" id="timerOffset"
style="strokedashoffset: 76.1942px;" r="48.5" cx="50" cy ="50"
/>
<circle class="progressbar-marker-timer" id="timerRotate"
style="transform: rotate(270deg);" r="6" cx="50" cy="1.5" />
Я создал функцию для вычисления этих двух значений.
Я пытаюсь использовать getElementById () для заполнения значений. Я назначил идентификаторы для элементов SVG.
<circle class="progressbar-line-timer" id="timerOffset"
r="48.5" cx="50" cy ="50" />
<circle class="progressbar-marker-timer" id="timerRotate"
r="6" cx="50" cy="1.5" />
Поскольку у этих атрибутов стиля есть специальные символы - тире, двоеточия и парены, я использую encodeURI для кодирования строки, поскольку я прочитал, что она может обрабатывать специальные символы.
Я не могу получить правильные значения для правильного кодирования. Я получаю эту ошибку в заявлении document.getElementById ("timerOffset"):
VM88:31 Uncaught TypeError: Cannot read property 'style' of
null
at <anonymous>:31:47
(anonymous) @ VM88:31
Вот мой код JavaScript:
//calculated values rotateTimer
// offsetTimer
// using escape to recognize the double quotes
timerURIComprotateHold = ('\"stroke-dashoffset: '+rotateTimer+'\"')
var timerURIComprotate = encodeURI(timerURIComprotateHold);
console.log('timerURIComprotate '+timerURIComprotate );
// erroring on this statement
document.getElementById("timerOffset").style.timerURIComprotate;
// calculated value of timerURIComprotate %22stroke-dashoffset:%20125.99999999999999px;%22
Разве не 22% кавычек и% 20 пробел, и не должно ли это работать?
Я тоже попробовал кодировать URIComponent, но безуспешно.
Есть ли другой способ кодирования, который я могу попробовать?
Кодировка должна быть в том числе и с паренами, поскольку они находятся в атрибутах стиля второго элемента, который я хочу стилизовать.
Спасибо за вашу помощь.