Portál AbcLinuxu, 9. května 2024 19:51


Dotaz: js onclick

3.12.2008 14:07 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
js onclick
Přečteno: 192×
Odpovědět | Admin
Mám trošku problém s následujícím kódem v js:
var ul=document.createElement('ul');
			var datas=xml.getElementsByTagName('data');
			for(var i=0;i<datas.length;i++) {
				var value=datas[i].firstChild.nodeValue;
				var li=document.createElement('li');
				li.appendChild(document.createTextNode(value));
				li.onclick=function() {
					dest.value=value;
				}
				ul.appendChild(li);
			}
			msg.appendChild(ul);

Konrétně s tučně zobrazeným řádkem. Po kliknutí na jakoukoli vygenerovanou položku li je v dest.value pouze poslední hodnota value.

Na příkladu Mám v onclick všude Praha 15. Kde dělám chybu. Předem děkuji za vaše rady.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

3.12.2008 14:22 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
Rozbalit Rozbalit vše Re: js onclick
Odpovědět | | Sbalit | Link | Blokovat | Admin
Sry omlouvám se za položení otázky do špatné diskuse, čímž prosím adminy, aby jí přesunuli do správné.
3.12.2008 14:33 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: js onclick
Odpovědět | | Sbalit | Link | Blokovat | Admin
V čase, keď sa ten callback zavolá tá premenná obsahuje poslednú hodnotu. Riešenie by mohlo byť použiť tam priamo element toho pola datas (ale to by asi bolo náročné na pamäť, kedže by sa to pole nemohlo uvoľniť), prípadne by sa mohlo použiť niečo takéto:
function _click(value)
{
	return function(){dest.value=value;};
}

var ul=document.createElement('ul');
var datas=xml.getElementsByTagName('data');
for(var i=0;i<datas.length;i++) {
	var value=datas[i].firstChild.nodeValue;
	var li=document.createElement('li');
	li.appendChild(document.createTextNode(value));
	li.onclick=_click(value);
	ul.appendChild(li);
}
msg.appendChild(ul);

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.