2014-10-16 4 views
1

Я могу получить ширину моего объекта svg в javascript и сохранить значение в переменной. это мой объектПолучить ширину или высоту svg rectangle javascript

<rect id="cercle1" x="5" y="25" width="50" height="50" stroke-width="1" stroke="#0E0E0E" style="fill:red; stroke:black; stroke-width:2"; /> 

Я стараюсь это:

document.getElementById ('cercle1') width.value;.

спасибо за помощь

+0

Кстати, вы можете иметь 'стиль =«...»' или атрибуты презентации, но вы не нужны оба с противоречивыми значениями. например либо 'stroke-width =" 1 "' ** или ** 'style =" stroke-width: 2px "'. – Phrogz

ответ

1

Вы можете использовать функцию GetAttribute:

document.getElementById('cercle1').getAttribute("width"); 

Это получит вам строки из HTML кода. Как упоминалось в нем , вам может понадобиться число или фактическое значение (это может быть другое). Если да, обратитесь к his answer.

+1

Обратите внимание, что это возвращает строковое значение. В то время как JavaScript свободно вводится и тихо пытается сделать правильную вещь при преобразовании строки в число, это не всегда правильно. Вероятно, вы хотите использовать '+ ...' или '* 1' для преобразования в реальный номер. – Phrogz

+0

@Phrogz Это правда, все зависит от того, как вам нужно его использовать. В некоторых случаях этого будет достаточно, в других - ваш метод будет лучше. – blex

1

Вы можете попробовать это:

var obj = document.getElementById("cercle1"); // reference to the object tag 
var rect = obj.getBoundingClientRect(); // get the bounding rectangle 
alert(rect.width); 
alert(rect.height); 

Или это:

var obj = document.getElementById("cercle1"); // reference to the object tag 
var svgdoc = obj.contentDocument; // reference to the SVG document 
var svgelem = svgdoc.documentElement; // reference to the SVG element 
alert(svgelem.getAttribute("width")); 

Вот рабочий пример JSFiddle.

Из комментариев от Phrongz: Обратите внимание, что ограничивающий прямоугольник будет учитывать преобразования, которые могут быть или не быть желательными.

+0

Что такое 'el' в вашей первой части кода? – blex

+1

@blex это была опечатка. Я починил это. –

+1

Обратите внимание, что ограничивающий прямоугольник будет учитывать преобразования, которые могут быть или не быть желательными. – Phrogz

2

Атрибут width - это свойство SVGAnimatedLength. Таким образом, вам необходимо:

// If you want the original value 
var w = document.getElementById('cercle1').width.baseVal.value; 

// If it is animated and you want the current animated value 
var w = document.getElementById('cercle1').width.animVal.value; 

Или, если просто хотите, что в исходном коде:

var w = document.getElementById('cercle1').getAttribute('width')*1; // convert to num 
Смежные вопросы