HighDots Forums  

problemi document.getElementsByName

Javascript (Italian) Il linguaggio JavaScript (it.comp.lang.javascript)


Discuss problemi document.getElementsByName in the Javascript (Italian) forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Mello
 
Posts: n/a

Default problemi document.getElementsByName - 10-16-2006 , 09:20 AM






Salve a tutti,

Mentre su FF il metodo document.getElementsByName("hdrTAG01") mi
ritorna un array (correttamente) di oggetti IE non torna un array vuoto
(con 0 elementi).

nb. uso la getElementsByName perchè la stessa cosa può apparire più
volte nella stessa pagina e non posso quindi utilizzare le
getelementbyid.

è una cosa regolare o sbaglio l'approccio?


Reply With Quote
  #2  
Old   
ZER0
 
Posts: n/a

Default Re: problemi document.getElementsByName - 10-16-2006 , 09:32 AM






On 16 Oct 2006 06:20:27 -0700, Mello wrote:

Quote:
Mentre su FF il metodo document.getElementsByName("hdrTAG01") mi
ritorna un array (correttamente) di oggetti IE non torna un array vuoto
(con 0 elementi).
Non è ben chiaro. Intendi dire che, in presenza di zero elementi aventi il
name passato come parametro, FF ti ritorna un array di zero elementi mentre
IE no?
Cmq sia, nessuno dei due ti ritorna effettivamente un array. Ma ciò che
ottieni, può essere manipolato come tale in entrambi i modi. Sia IE che FF
ti restituiscono un oggetto con una proprietà "length" pari a zero, nel caso
non abbiano trovato alcun elemento corrispondente al name passatogli.

Quote:
è una cosa regolare o sbaglio l'approccio?
Probabilmente sbagli qualcosa.

--
~ "Non esiste la certezza: è solo l'illusione di una realtà soggettiva."
(Fabio Mornati)



Reply With Quote
  #3  
Old   
Mello
 
Posts: n/a

Default Re: problemi document.getElementsByName - 10-16-2006 , 09:50 AM



Allora:

Ho n tablelle che mi rappresentano le disponibilità di mangazzino di
determinati articoli di abbigliamento, n tabelle perchè sono
raggruppati per tipo taglia (s m l xl oppure 40 41 42 ecc)

Al click su una riga devo cambiare le intestazioni della tabella
contenente il modelli, chiaramente la tabella viene creata server side
quindi devo dare id diversi ai label contenuti nei vari th ma per
comodità metto tutti con lo stesso name = "hdrTAG01" per la prima e
"hdrTAG02" per la seconda .. quindi al click cosa faccio:

itm ="hdrTAG0"+ (i+1);
txts = document.getElementsByName(itm);

e in un for vario le intestazioni,non è un metodo troppo elegante, ma
semplifica le cose... almeno su FF il quale mette in txts la lista
degli header (che poi è un array di un elemento).
in explorer invece ritorna un array di 0 elementi quindi vuoto e non ho
modo di lavorare sulle taglie.


ZER0 ha scritto:

Quote:
Non è ben chiaro. Intendi dire che, in presenza di zero elementi aventiil
name passato come parametro, FF ti ritorna un array di zero elementi mentre
IE no?
Cmq sia, nessuno dei due ti ritorna effettivamente un array. Ma ciò che
ottieni, può essere manipolato come tale in entrambi i modi. Sia IE cheFF
ti restituiscono un oggetto con una proprietà "length" pari a zero, nelcaso
non abbiano trovato alcun elemento corrispondente al name passatogli.


Reply With Quote
  #4  
Old   
ZER0
 
Posts: n/a

Default Re: problemi document.getElementsByName - 10-16-2006 , 10:15 AM



On 16 Oct 2006 06:50:43 -0700, Mello wrote:

Quote:
Ho n tablelle che mi rappresentano le disponibilità di mangazzino di
determinati articoli
[..]
Al click su una riga devo cambiare le intestazioni della tabella
contenente il modelli,
Se hai un esempio di codice di markup da vedere, è probabile che si trovi
anche una strada alternativa.
Nel caso metti una pagina in cui replichi tale errore online da qualche
parte, e vediamo cosa si riesce a fare.

Quote:
itm ="hdrTAG0"+ (i+1);
txts = document.getElementsByName(itm);

e in un for vario le intestazioni,non è un metodo troppo elegante, ma
semplifica le cose... almeno su FF il quale mette in txts la lista
degli header (che poi è un array di un elemento).
Non capisco: se ti ritorna un solo elemento che senso ha il name, allora?

Quote:
in explorer invece ritorna un array di 0 elementi quindi vuoto e non ho
modo di lavorare sulle taglie.
Evidentemente c'è qualcosa che non va nel codice di markup sul quale lavori.
Se fai un semplice test in una paginetta html creata per l'occasione, sono
sicuro che il metodo ti funzionerà ugualmente anche su IE.


--
~ Plagiarism is copying from one source;
research is copying from two or more
(Wilson Mizner)



Reply With Quote
  #5  
Old   
Mello
 
Posts: n/a

Default Re: problemi document.getElementsByName - 10-16-2006 , 10:48 AM




ZER0 ha scritto:

Quote:
On 16 Oct 2006 06:50:43 -0700, Mello wrote:

Ho n tablelle che mi rappresentano le disponibilità di mangazzino di
determinati articoli
[..]
Al click su una riga devo cambiare le intestazioni della tabella
contenente il modelli,

Se hai un esempio di codice di markup da vedere, è probabile che si trovi
anche una strada alternativa.
Nel caso metti una pagina in cui replichi tale errore online da qualche
parte, e vediamo cosa si riesce a fare.
<table cellspacing="0" cellpadding="1" border="0" style="width: 99%;"
class="Grid">
<caption>
<div id="A.M. "><div class="GroupHeader">A.M.</div></div>
</caption>
<thead>
<tr>
<th name="cmdRemove" id="A.M. hdrPRG_ID">R.</th>
<th name="cmdSave" id="A.M. hdrPRG_ID">S.</th>
<th id="A.M. hdrPRG_Modello">Modello</th>
<th id="A.M. hdrPRG_Articolo">Art.</th>
<th id="A.M. hdrPRG_Colore">Colore</th>
<th id="A.M. hdrPRG_DescLin">Linea</th>
<th name="hdrTAG01" id="A.M. hdrPRG_TAG01">T 1</th>
<th name="hdrTAG02" id="A.M. hdrPRG_TAG02">T 2</th>
<th name="hdrTAG03" id="A.M. hdrPRG_TAG03">T 3</th>
<th name="hdrTAG04" id="A.M. hdrPRG_TAG04">T 4</th>
<th name="hdrTAG05" id="A.M. hdrPRG_TAG05">T 5</th>
<th name="hdrTAG06" id="A.M. hdrPRG_TAG06">T 6</th>
<th name="hdrTAG07" id="A.M. hdrPRG_TAG07">T 7</th>
<th name="hdrTAG08" id="A.M. hdrPRG_TAG08">T 8</th>
<th name="hdrTAG09" id="A.M. hdrPRG_TAG09">T 9</th>
<th name="hdrTAG10" id="A.M. hdrPRG_TAG10">T 10</th>
<th name="lblTotale" id="A.M. hdrPRG_Totale">Tot.</th>
<th id="A.M. hdrPRG_PrzIng">Prezzo</th>
<th id="A.M. hdrPRG_Importo">Importo</th>
</tr>
</thead>
<tbody></tbody>
</table>

Ho omesso la parte del tbody per motivi di spazio

Quote:
Non capisco: se ti ritorna un solo elemento che senso ha il name, allora?
ritorna un elemento se c'è una sola griglia taglie .. potrebbero
essere n

Quote:
in explorer invece ritorna un array di 0 elementi quindi vuoto e non ho
modo di lavorare sulle taglie.

Evidentemente c'è qualcosa che non va nel codice di markup sul quale lavori.
Se fai un semplice test in una paginetta html creata per l'occasione, sono
sicuro che il metodo ti funzionerà ugualmente anche su IE.
Sicuramente.



Reply With Quote
  #6  
Old   
ZER0
 
Posts: n/a

Default Re: problemi document.getElementsByName - 10-17-2006 , 03:36 AM



On 16 Oct 2006 07:48:26 -0700, Mello wrote:

Quote:
Se hai un esempio di codice di markup da vedere, è probabile che si trovi
anche una strada alternativa.
Nel caso metti una pagina in cui replichi tale errore online da qualche
parte, e vediamo cosa si riesce a fare.

table cellspacing="0" cellpadding="1" border="0" style="width: 99%;"
class="Grid"
caption
<div id="A.M. "><div class="GroupHeader">A.M.</div></div
/caption
Un elemento inline (come caption) non può contenere un elemento block (come
div). Inoltre l'attributo ID del div non è valido, contiene uno spazio.

Quote:
<th name="cmdRemove" id="A.M. hdrPRG_ID">R.</th
<th name="cmdSave" id="A.M. hdrPRG_ID">S.</th
Stesso discorso dell'ID, inoltre l'elemento TH non ha l'attributo name che
io sappia. Se è quello che cerchi di raggiungere con la getElementsByName,
non lo trovi per tale motivo con IE.

Quote:
Non capisco: se ti ritorna un solo elemento che senso ha il name, allora?

ritorna un elemento se c'è una sola griglia taglie .. potrebbero
essere n
Non ha molto senso comunque. Ti conviene innanzitutto cambiare la struttura
di markup, ripulirla, ed eliminare gli errori di cui ti ho parlato
all'inizio.
Poi, se vuoi accedere agli header di una tabella, dato un indice (come mi
sembra tu stia già facendo), ti conviene fare una cosa di questo tipo:

var th = myTable.tHead.rows[0].cells[i];

Ovviamente myTable deve puntare alla tabella in questione.

--
~ Io non soffro di pazzia, ne godo ogni minuto.
(I don't suffer from insanity, I enjoy every minute of it)



Reply With Quote
  #7  
Old   
Mello
 
Posts: n/a

Default Re: problemi document.getElementsByName - 10-17-2006 , 08:18 AM




ZER0 ha scritto:

Quote:
Un elemento inline (come caption) non può contenere un elemento block (come
div). Inoltre l'attributo ID del div non è valido, contiene uno spazio.

<th name="cmdRemove" id="A.M. hdrPRG_ID">R.</th
<th name="cmdSave" id="A.M. hdrPRG_ID">S.</th
I div li ho tolti 3 secondi dopo averti mandato il codice, non ci avevo
fatto caso al fatto che venisse generato
Quote:
Stesso discorso dell'ID, inoltre l'elemento TH non ha l'attributo name che
io sappia. Se è quello che cerchi di raggiungere con la getElementsByName,
non lo trovi per tale motivo con IE.

Davvero? allora penso di rimuovere i vari th a favore di classici td

Quote:
var th = myTable.tHead.rows[0].cells[i];

si probabilmente farò così.



Reply With Quote
  #8  
Old   
ZER0
 
Posts: n/a

Default Re: problemi document.getElementsByName - 10-17-2006 , 08:25 AM



On 17 Oct 2006 05:18:43 -0700, Mello wrote:

Quote:
I div li ho tolti 3 secondi dopo averti mandato il codice, non ci avevo
fatto caso al fatto che venisse generato
Sistema anche gli ID, mi raccomando.

Quote:
Stesso discorso dell'ID, inoltre l'elemento TH non ha l'attributo name che
io sappia. Se è quello che cerchi di raggiungere con la getElementsByName,
non lo trovi per tale motivo con IE.

Davvero? allora penso di rimuovere i vari th a favore di classici td
Risolveresti ben poco, in quanto neppure i "classici td" hanno l'attributo
name.

Quote:
var th = myTable.tHead.rows[0].cells[i];

si probabilmente farò così.
E' la soluzione migliore, e ti evita di sporcare il codice di markup.

--
~ "Non hai veramente capito qualcosa fino a quando non sei in grado
di spiegarlo a tua nonna." (Einstein)



Reply With Quote
  #9  
Old   
Mello
 
Posts: n/a

Default Re: problemi document.getElementsByName - 10-17-2006 , 08:58 AM



Fatto con myTable.tHead.rows[0].cells[i];
e a logica è pure più veloce.

Grazie


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.