Подтвердить что ты не робот

Манипулировать SVG viewbox с JavaScript (без библиотек)

Я пытаюсь изменить окно просмотра элементов SVG в JavaScript. В принципе, я рисую двоичное дерево поиска, и когда он становится слишком широким, я хочу изменить окно просмотра, чтобы уменьшить масштаб, чтобы дерево входило в окно. В настоящее время я использую:

if(SVGWidth>=1000){
  var a = document.getElementById('svgArea');
  a.setAttribute("viewbox","0 0 " + SVGWidth + " 300");
}

HTML:

<svg id="svgArea" xmlns="w3.org/2000/svg"; xmlns:xlink="w3.org/1999/xlink"; width="1000" height="300" viewBox="0 0 1000 300">

Я также пробовал использовать setAttributeNS ('null',...), но это тоже не сработало. Одна странная вещь, которую я заметил, это то, что когда я предупреждаю (а), она дает [объект SVGSVGElement], который кажется странным. Любая помощь приветствуется.

4b9b3361

Ответ 1

Было бы хорошо видеть контекст svg, но следующее работало для меня с чистым документом SVG:

shape = document.getElementsByTagName("svg")[0];
shape.setAttribute("viewBox", "-250 -250 500 750"); 

Может быть, потому что viewBox чувствителен к регистру?

Ответ 2

У вас есть ошибка в вашем коде: "viewbox" отличается от "viewBox"... B находится в верхнем регистре. Измените код на:

a.setAttribute("viewBox","0 0 " + SVGWidth + " 300");