Newsgroup: it.comp.lang.javascript
Titolo: Aiuto: DOM o cos'altro?

Ciao a tutti,
mi servirebbe una mano per identificare un certo carattere. All'interno di
una pagina Web ho diversi <label> al cui interno metto in evidenza un
carattere che farà da accesskey, ad esempio:
<label for="username" title="L'username scelta durante la
registrazione"><span class="accessKey">U</span>sername</label>
<input type="text" name="username" id="username" accesskey="u" />
<label for="password" title="La tua password personale">Pa<span
class="accessKey">s</span>sword</label>
<input type="password" name="password" id="password" accesskey="s" />
Ora, se guardate il title di <label> vedrete un piccolo testo esplicativo
(nel caso specifico molto banale ma ne ho altri più utili). Ad ogni modo,
vorrei aggiungere in automatico l'access key di quel particolare label, ad
esempio, il tooltip:
L'username scelta durante la registrazione
Dovrà diventare:
[U] L'username scelta durante la registrazione
Per fare questo, avevo pensato di fare un ciclo sui tag <label> e poi
usare le regexp per intercettare ciò che sta in mezzo a un pattern simile:
/<span class="accessKey">\w{1}<\/span>/
A parte che non mi sembra la soluzione ideale (il DOM non può venirmi in
aiuto? Magari un nextChild?) non sono riuscito a farla funzionare. Ho
provato il metodo search, poi match, poi un più semplice indexOf (avevo in
mente di fare l'indexOf del carattere < e inserire questo valore nel
substring ma IE legge <span class=accessKey> e Firefox invece <span
class="accessKey"> e quindi l'indice dell'indexOf va a farsi benedire).
Avete suggerimenti, idee o qualunque cosa possa essermi d'aiuto?
Crossbrowser sarebbe più gradito :-)
Grazie per l'attenzione.
Robe'
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 usare le regexp per intercettare ciň che sta in mezzo a un pattern simile:
Perché? E' il nodeValue dello span.
Io farei un qualcosa di questo tipo:
[ipotesi]
I tag si trovano dentro la prima form presente nella pagina
[/ipotesi]
 window.onload=function() {
  for(var
i=0,obj=document.forms[0].getElementsByTagName('label');i<obj.length;i++)
obj[i].title="["+obj[i].getElementsByTagName('span')[0].firstChild.nodeValue+"]
"+obj[i].title;
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.

 [/ipotesi]
Ciao Cristiano,
grazie innanzitutto per la risposta e l'esempio fornito, funziona a
meraviglia. Ho un solo dubbio: se i label fossero presenti in più di una
<form>?
Ammettiamo il classico caso: in alto a destra c'è il form di login al
sistema e magari al centro della pagina ci sta un altro form per la
richiesta di un contatto.
Come dovrei fare in casi simili? Partendo dal presupposto che vorrei
inserire questa funzione in un file .js esterno (qualcosa tipo library.js)
e che quindi lavori indipendentemente dal numero di form presenti nella
pagina (anche perché ho documenti con il motore di ricerca e opzioni
avanzate, poi il login, il modulo contatti, il modulo di iscrizione ecc.).
Come faresti in questo caso?
Ti ringrazio di nuovo.


 <form>?
Se devi farlo su tutte le form presenti nella pagina aggiungi un ciclo per
le form. Diventerebbe quindi un qualcosa del tipo
 window.onload=function() {
  for(var j=0,objForm=document.forms;j<objForm.length;j++)
   for(var
i=0,obj=objForm[j].getElementsByTagName('label');i<obj.length;i++)
obj[i].title="["+obj[i].getElementsByTagName('span')[0].firstChild.nodeValue+"]
"+obj[i].title;
-- 
"Ho smesso di fumare.
 Vivrò una settimana di più.
 E in quella settimana pioverà a dirotto"
									    W.A.

 le form.
Ho aggiunto il ciclo come consigliato e ora č perfetto.
Grazie davvero.
