2016-09-22 9 views
0

У меня есть следующий SVG элемент текста:Получить SVG текст элемента Ширина

<text data-model-id=​"k10673" x=​"584" y=​"266" fill-opacity=​"1" style=​"font:​ 12px Arial,Helvetica,sans-serif;​ " fill=​"#a5d16f">​BU YIL SONU​</text>​ 

Пришло примерно в середине экрана. И я могу проверить это следующим образом:

enter image description here

мне нужно, чтобы получить ширину этого текста. На хромированной отладчик, я могу видеть, что текст имеет ширину 83.941

enter image description here

Однако, я не могу получить эту ширину от моей страницы Javascript. Любой метод, связанный с шириной, возвращает ноль, хотя он корректно отображается отладчиком Chrome.

я получаю элемент следующим образом:

var x = document.querySelector("#k11489 > g:nth-child(27) > text:nth-child(1)") 

Затем, следуя Javascript функции все возвращают ноль или не определено:

x.getComputedTextLength() 
x.getBBox().width 
x.style.width 

Также я попытался следующие функции JQuery после получения объекта JQuery , однако ни одна из них не возвращает ширину:

x.width() //Returns the function 
x.innerWidth() //Returns null 
x.outerWidth() //Returns null 

Примечание: Чтобы убедиться, что x указывает на текстовый элемент, я проверяю их через консоль. Ниже приведены снимки Javascript и JQuery объектов:

enter image description here

enter image description here

Как я могу получить ширину этого объекта в JavaScript, с помощью или JQuery?

+0

Ждете, пока DOM не будет готов, прежде чем пытаться получить доступ к элементам? –

+0

@PaulLeBeau Я пытаюсь использовать их на консоли разработчика Chrome, спустя несколько минут после загрузки DOM. –

+1

Знаете ли вы, что 'x' указывает на текстовый элемент? – ConnorsFan

ответ

-1

Вы можете использовать getBBox() (который является частью SVG 1.1), чтобы получить ширину элемента svg, как показано ниже.

$("your_jquery_selector")[0].getBBox().width. 

Если это допустимый селектор затем использовать

$("#k11489 > g:nth-child(27) > text:nth-child(1)")[0].getBBox().width 
+0

OP заявляет в вопросе, что они попробовали это, и он возвращает 0. –

+0

Я тестировал как функцию jquery, так и функцию javscript, и оба работали для одного из моих локальных тестов. Посмотрите этот снимок экрана https://www.dropbox.com/s/q2jhjggwiv691bi/svg.png?dl=0. Поскольку он применил эту функцию к javascript, проблема может быть связана с селектором dom. Если конкретный элемент не существует, то в конечном итоге он получит неопределенный для с. Прежде всего, он должен убедиться, что селектор верен –

+0

Все, что доказывает, что OP делает что-то другое. Элемент существует, поскольку он показывает результаты выбора на скриншотах в вопросе. –

Смежные вопросы