Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Динамическое создание SVG с линком, SVG обьект не виден 
V
    Опции темы
inohodec
Дата 21.6.2012, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 151
Регистрация: 1.12.2004

Репутация: нет
Всего: 2



Всем привет

Столнулся с неожиданной проблемой, нужна помощь smile

Я пытаюсь динамически создавать определенный список из javascript:
Код

function buildList() {

var container = document.getElementById("lbUsers");
var mySvg = document.createElementNS("http://www.w3.org/2000/svg", "svg");

for (var i = 0; i < 5; i++) {        
var c2 = document.createElementNS("http://www.w3.org/2000/svg", "rect");
c2.setAttribute("x", "5");
c2.setAttribute("y", 70*i);
c2.setAttribute("rx", "20");
c2.setAttribute("ry", "20");
c2.setAttribute("width", "60");
c2.setAttribute("height", "60");
c2.setAttribute("fill", "red");
c2.setAttribute("stroke", "black");//#AA99FF
c2.setAttribute("stroke-width", "5");
c2.setAttribute("opacity", "0.5");

var anchor =  document.createElementNS( "http://www.w3.org/1999/svg", "a");
anchor.setAttribute("xlink:href", "index.html");

var b2 = document.createElementNS("http://www.w3.org/2000/svg", "text");
b2.setAttribute("font-size", "40");
b2.setAttribute("font-family", "arial");
b2.setAttribute("font-family", "arial");
b2.setAttribute("fill", "#0f0");
b2.setAttribute("x", "25");
b2.setAttribute("y", 70*i);
b2.textContent = "Hello World";

anchor.appendChild(c2);
anchor.appendChild(b2);
mySvg.appendChild(anchor);

container.appendChild(mySvg);
        }
}


Html  такой:
Код

<body onload="buildList()">
<div id="lbUsers"></div> 


Это действительно создает нужные элементы но они не видимы :(
Т.е. если я копирую view source и из полученного html делаю новую страницу то она открываетса без проблем и все элементы на месте
А вот сразу, динамически они почему то не видимы 

Заранее спасибо smile
PM MAIL   Вверх
Aliance
Дата 21.6.2012, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



В то время, как создание svg элемента должно происходить в рамках svg namespace (что у вас реализовано), большинство svg аттрибутов должны создаваться с нулевым namespace
Код

elem.setAttributeNS(null, "key", value);
// или
elem.setAttribute("key", value);

Что так же у вас выполняется. Но из этого правила есть исключение - аттрибут href в namespace "xlink" должен задаваться с явным указанием общего svg namespace:
Код

anchor.setAttributeNS("http://www.w3.org/2000/svg", "xlink:href", "index.html");


http://jsfiddle.net/Aliance/aL7qT/
PM MAIL WWW ICQ Skype   Вверх
inohodec
Дата 21.6.2012, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 151
Регистрация: 1.12.2004

Репутация: нет
Всего: 2



Огромное спасибо!!!

А я уже несколько часов сижу мучаюсь:)

Спасибо
PM MAIL   Вверх
inohodec
Дата 21.6.2012, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 151
Регистрация: 1.12.2004

Репутация: нет
Всего: 2



Упс, поторопился:(

Линки не работают

Помогите пожалуйста еще раз smile

Спасибо
PM MAIL   Вверх
Aliance
Дата 21.6.2012, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Дело в том, что для корректной работы должны выполняться 3 условия:
  • в головном теге <svg> должен присутствовать атрибут xmlns равный http://www.w3.org/2000/svg
  • в головном теге <svg> должен присутствовать атрибут xmlns:xlink равный http://www.w3.org/1999/xlink
  • в теге <a> должен присутствовать атрибут href (или xlink:href)
http://jsfiddle.net/Aliance/FU4vG/

Это сообщение отредактировал(а) Aliance - 22.6.2012, 09:22
PM MAIL WWW ICQ Skype   Вверх
inohodec
Дата 21.6.2012, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 151
Регистрация: 1.12.2004

Репутация: нет
Всего: 2



Спасибо smile

Да я искал вроде бы как....
Но как правильно говориться, что бы правильно задать вопрос нужно знать большую часть ответа
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0517 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.