Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.06.2011, 13:49
Аспирант
Отправить личное сообщение для zaytsewa Посмотреть профиль Найти все сообщения от zaytsewa
 
Регистрация: 09.11.2010
Сообщений: 71

SVG добавление дочернего элемента
Всем привет!

Есть svg-документ, в нём для некоторых g-элементов требуется загрузить контент из файла.

Делаю так :
var content = new DOMParser().parseFromString("<g>"+
"  <rect"+
"     width='1053.5891'"+
"     height='291.32797'"+
"     x='-178.22313'"+
"     y='0.98392'"+
"     id='rect3638'"+
"     style='opacity:1;fill:url(#radialGradient3880);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4.1880002;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1' />"+
"</g>", 'application/xhtml+xml').firstChild
 alert( this.childNodes.length )
 this.appendChild( new SVGElement( content) )
 alert( this.childNodes.length )
 this.appendChild( content )


appendChild не работает
append тоже не работает...
помогите, в чём ошибка ??
Ответить с цитированием
  #2 (permalink)  
Старый 15.06.2011, 14:10
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

document.createElementNS('http://www.w3.org/2000/svg', tag)
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.

Последний раз редактировалось Nekromancer, 15.06.2011 в 14:16.
Ответить с цитированием
  #3 (permalink)  
Старый 15.06.2011, 14:46
Аспирант
Отправить личное сообщение для zaytsewa Посмотреть профиль Найти все сообщения от zaytsewa
 
Регистрация: 09.11.2010
Сообщений: 71

а куда деть content ?
Ответить с цитированием
  #4 (permalink)  
Старый 15.06.2011, 14:49
Аспирант
Отправить личное сообщение для zaytsewa Посмотреть профиль Найти все сообщения от zaytsewa
 
Регистрация: 09.11.2010
Сообщений: 71

а как добавить в него content ?
Ответить с цитированием
  #5 (permalink)  
Старый 15.06.2011, 15:38
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

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

Последний раз редактировалось Nekromancer, 15.06.2011 в 15:47.
Ответить с цитированием
  #6 (permalink)  
Старый 15.06.2011, 16:12
Аспирант
Отправить личное сообщение для zaytsewa Посмотреть профиль Найти все сообщения от zaytsewa
 
Регистрация: 09.11.2010
Сообщений: 71

обычным innerHTML не работает...
Ответить с цитированием
  #7 (permalink)  
Старый 15.06.2011, 18:20
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

<!DOCTYPE html>
<html>
<head>
<script>
var parser = new DOMParser(), conteiner = parser.parseFromString('\
<svg version="1.1" xmlns="http://www.w3.org/2000/svg">\
<g>\
<rect width="100%" height="100%" fill="red" />\
<circle cx="150" cy="100" r="80" fill="green" />\
<text x="150" y="125" font-size="60" text-anchor="middle" fill="white">SVG</text>\
</g>\
</svg>\
', 'text/xml').documentElement.firstElementChild;
document.addEventListener('DOMContentLoaded', function(){
	document.getElementById('svg').appendChild(conteiner);
}, false)
</script>
</head>
<body>
<svg version="1.1" baseProfile="full" id="svg" xmlns="http://www.w3.org/2000/svg">
</svg>
<body>
</html>

https://developer.mozilla.org/en/SVG...etting_Started
https://developer.mozilla.org/en/DOMParser
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #8 (permalink)  
Старый 15.06.2011, 21:07
Аспирант
Отправить личное сообщение для zaytsewa Посмотреть профиль Найти все сообщения от zaytsewa
 
Регистрация: 09.11.2010
Сообщений: 71

так вроде бы правильнее, только работать перестало
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" 
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" baseProfile="full" id="svg" 
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink" 
>
<script type="text/ECMAScript" language="javascript">
var parser = new DOMParser(), conteiner = parser.parseFromString('\
<svg version="1.1" xmlns="http://www.w3.org/2000/svg">\
<g>\
<rect width="100%" height="100%" fill="red" />\
<circle cx="150" cy="100" r="80" fill="green" />\
<text x="150" y="125" font-size="60" text-anchor="middle" fill="white">SVG</text>\
</g>\
</svg>\
', 'text/xml').documentElement.firstElementChild;
document.addEventListener('DOMContentLoaded', function(){
   alert(document.getElementById('main'))
	document.getElementById('main').appendChild(conteiner);
}, false)
</script>
<g id="main">
<rect width="300" height="100"
style="fill:rgb(0,0,255);stroke-width:1;
stroke:rgb(0,0,0)"/>
</g>
</svg>
Ответить с цитированием
  #9 (permalink)  
Старый 15.06.2011, 22:04
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

Во первых у меня изначально это HTML документ, а у тебя SVG. Во вторых если у тебя и так SVG документ, зачем парсить строки, разве нельзя создать просто ноды? В третих майм тайп для JS - "text/javascript".
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #10 (permalink)  
Старый 15.06.2011, 22:08
Аспирант
Отправить личное сообщение для zaytsewa Посмотреть профиль Найти все сообщения от zaytsewa
 
Регистрация: 09.11.2010
Сообщений: 71

мне нужно редактировать именно svg-документ
подгружать контент для нод динамически нужно для ускорения работы
если в доке 1000 нод, то не обязательно они все и сразу понадобятся
поэтому подгружать необходимо только те, к которым обращается пользователь
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление элемента в определенное место haveFun Events/DOM/Window 5 02.05.2011 19:54
Изменение стиля родительского элемента при :hover дочернего lanzs Элементы интерфейса 2 16.10.2010 13:28
добавление элемента формы sc2r2bey Элементы интерфейса 3 15.06.2010 16:20
Как определить id дочернего элемента DOM? Motonto Events/DOM/Window 1 09.04.2009 08:13
Добавление элемента и работа с ним nvbn Events/DOM/Window 13 07.07.2008 19:07