Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как получить второй дочерний элемент, или второй смежный (https://javascript.ru/forum/events/10364-kak-poluchit-vtorojj-dochernijj-ehlement-ili-vtorojj-smezhnyjj.html)

libinstyle 30.06.2010 19:13

Как получить второй дочерний элемент, или второй смежный
 
Здравствуйте, запарсил XML, и некоторые таги и аттрибуты отобразил прям как есть. Вот кусок кода.

<item thumb="il-button15.jpg">
			<img link="il-image15.jpg"><txt><![CDATA[<font color='#3E3A3A'>In the Beginning Man Created God</font>, Keter Books]]></txt></img>
		</item>
		
		<item thumb="il-button16.jpg">
			<img link="il-image16.jpg"><txt>Tolerance, Galeria Barbour</txt></img>
		</item>
		
<item thumb="il-button17.jpg">
<img src="../images/illustration/il-image17e.jpg" class="pics" height="50"> 
				<txt style="display:none"><font color='#3E3A3A'>A Girl from There</font> by Hava Nissimov, Mikteret Books</txt> 
				<buyit style="display:none" data-typ="book" data-short_text="A Girl from There" data-prc="18" id="111115">Limited edition, 112 pages, Hebrew language<br/>Separate English translation attached<br/>Fragments of memories  of a  child<br/>Israel Meuseum Award - silver medal</buyit> 
			</img> 
			<img src="../images/illustration/il-image17f.jpg" class="pics" height="50"> 
				<txt style="display:none"><font color='#3E3A3A'>A Girl from There</font> by Hava Nissimov, Mikteret Books</txt> 
				<buyit style="display:none" data-typ="book" data-short_text="A Girl from There" data-prc="18" id="111116">Limited edition, 112 pages, portugal language<br/>Separate English translation attached<br/>Fragments of memories  of a  child<br/>Israel Meuseum Award - silver medal</buyit> 
			</img> </item>


В некоторых у некоторых img, нет дочернего элемента buyit.
У меня есть скрипт, который выполняется при клике на img
window.onload=(function(){
    var pics=(d=document).getElementsByTagName('img');
    for(i=0;i<=(pics.length-1);i++){ 
        pics[i].onclick=(function(){
            alert(/////)
			
			 
    
	
	 
	   }); 
		
    }

});

Что мне прописать в alert, чтобы он мне выдал значения аттрибута
data-short_text у тега <buyit> если таковой (тег) имеется, а если нет, то вывел бы "!!!".
Пытался писать this.ChildNodes[1],

убирал </img>, вместо него <img src="" /> и тогда делать this.nextSibling.nextSibling ничего не получилось. Как быть?
Заранее спасибо!

exec 30.06.2010 19:50

this.getElementsByTagName('buyit');


Не гарантирую работоспособность, т.к. IMG — одиночный тег, м.б. он вообще не может иметь дочерних узлов.

libinstyle 30.06.2010 20:25

Все. разобрался, просто всю эту тему заключил в span, а img сделал как надо- <img /> внутри него.
следовательно там же и buyit. А потом вот такой вот код
var gg=this.parentNode.getElementsByTagName('buyit');
	
	alert(gg[0].getAttribute('data-prc'));

Sweet 30.06.2010 20:34

Я бы сделал так:
a=document.getElementsByTagName('buyit')
for(var i=0; i<a.length; i++) {
a[i].parentNode.onclick = function(x) {
return function() { alert(a[x].getAttribute('data-short_text')) }
}(i)
}

Жаль только я опоздал с ответом:)

libinstyle 30.06.2010 20:41

Зачетно, спасибо! Запишу это к себе на будующее. В данном случае спэн предпочтительней так как это разрешило мне еще одну неразрешимую задачу )))


Часовой пояс GMT +3, время: 17:42.