Ciao
come da titolo ho bisogno di identificare una determinata ancora in una lista non ordinata che ne contiene un certo numero.
esempio:
codice:
// creo la lista così come mi viene presentata da remoto tramite una chiamata ajax che ritorna un json:
...............................
... snip altro codice ....
...............................
var ret = JSON.parse(o.responseText),
s = document.getElementById('suggerimento_'+id),
ul = document.createElement('ul'),
list = new Array();

if (s.hasChildNodes()) {	//	rimuove i nodi eventualmente presenti
	for (var i = 0, n = s.childNodes.length; i < n; i++) {
		s.removeChild(s.childNodes[i]);
	}
}
for (var i = 0, n = ret.length; i < n; i++) {	//	Crea la lista con i nodi
	list[i] = document.createElement('li');
	var a = document.createElement('a');
	a.appendChild(document.createTextNode(ret[i].Com));
	a.id = 'a'+i;
	a.setAttribute('href', '#suggerimento_'+id);
	
	a.onclick = function() {
		document.getElementById(id).value = a.childNodes[0].nodeValue;
		s.style.display = 'hide';
	}
	list[i].appendChild(a);
	ul.appendChild(list[i]);
}
s.appendChild(ul);
s.style.display = 'block';
..............................
... snip altro codice ...
..............................
Ora a dire il vero il listato funziona fino ad un certo punto, ovvero, se fate click su una qualsiasi dei "link" presentati nel "suggeritore" viene sempre e comunque letto l'ultimo a prescindere da ciò che avete chiesto.
Il motivo è che document.getElementById(id).value = a.childNodes[0].nodeValue; da sempre come risultato l'ultima ancora della lista di link.
Ho anche pensato di modificare lo script in modo da prendere il testo dell'ancora non tramite childNodes ma attraverso l'id dell'ancora stessa, modificando lo scrpt in modo che diventi qualcosa come.... document.getElementById(id).value = document.getElementById['a1'].nodeValue; dove ovviamente a1, a2, aX vengono inseriti dinamicamente al momento della creazione della lista.
Ammetto che quest'ultima opzione mi è venuta in mente proprio ora ragionando sul topic che sto scrivendo, ma non posso provarla in quanto mi manca in locale i database a cui il "suggeritore" attinge i nomi da mostrare. Ma ditemi almeno se secondo voi è un'ipotesi praticabile perché ci sto sbattendo la testa da questa mattina.
Grazie.