Управление 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], который кажется странный. Любая помощь приветствуется.

2 ответов


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

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

может быть, это потому, что viewBox регистр?


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

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