Newsgroup: it.comp.lang.javascript
Titolo: Sara' anche semplice ma non ricordo

Come posso fare in modo che al click del mouse su una riga di una tabella
essa cambi colore per evidenziare che e' stata selezionata.
Grazie Beppe


http://www.jsdir.com
 FAQ - Tabelle  oppure..FAQ-documenti
____________________
andreotta fabiano
WebMªster ATI POWER s.n.c.
andr...@atipower.it
http://www.atipower.it
http://www.aticommerce.com
http://www.afdsoftware.freeweb.org
http://www.jsdir.com
http://www.javascript.3000.it

  <tr>
    <td bgColor="#000000" onmouseout="style.backgroundColor='#00F000'; "
    onmouseover="style.backgroundColor='#333333'; style.cursor='hand'; "><a
    href="main.htm"><font
    color="#ffffff" face="Arial, Verdana" size="2">Main</font></a></td>
  </tr>
--
 _______________________________________
        Gnaffy SoftWare
   web: 
http://gnaffy.tripod.com/
   e-mail: Gna...@Wappi.com
   e-mail: 
bmq...@tin.it
   ICQ#: 76488613
 ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

 essa cambi colore per evidenziare che e' stata selezionata.
Credo che pippopd o Zer0 abbiano risposto ad una domanda simile questa 
settimana..... ma non sono sicuro....
.... e comunque non lo so.. sorry :-( 
-- 
Ciao, Riccardo
------------------------------------------------------------------------
WebMaster: ----> 
http://www.jsdir.com
 <---- (aka 
http://www.jspoint.it
)
------------------------------------------------------------------------
Need a JavaScript password?
http://www.jspoint.it/staffscripts/script021/PazzWordProva/ingresso.html
------------------------------------------------------------------------
"Any sufficientely advanced technology is indistinguishable from magic"
                      Arthur Charles Clarke
------------------------------------------------------------------------

 la riga.
Un po' di tempo fa (forse ricorderai) postai sull'NG uno script che svolgeva
lo stesso compito di quello da te postato su 
jsdir.com
, solo che era di
realizzazione piu' semplice (difatti non e' necessario creare tutti quegli
oggetti e catturare l'evento dell'intera pagina), ma aveva un "difetto"
riguardo l'altezza delle celle.
Per curiosita' sono andato a vedere se il codice da realizzato era cosi'
"complesso" perche' aggirava tale problema, ma ho visto che anche il tuo
script ha lo stesso difetto.. :/

 script ha lo stesso difetto.. :/
[]
Io lo provato con celle che hanno un'unica riga di testo; non ho ancora
avuto modo di fare altre prove; se mi indichi quali sono i problemi
cerco di capirci qualcosa.
Saluti, Paolo
 cosi' vedo perche' ho perso tanto tempo

  cosi' vedo perche' ho perso tanto tempo
:?


Per IE puoi usare un codice di questo tipo:
<html><head></head><body>
<table width=100% border=0 cellpadding=0 cellspacing=0>
<script language="JavaScript">
var aa = new Array()
aa[0]=new Array('riga1', 'cella11', 'cella12', 'cella13')
aa[1]=new Array('riga2', 'cella21', 'cella22', 'cella23')
aa[2]=new Array('riga3', 'cella31', 'cella32', 'cella33')
for(i=0;i<aa.length;i++){
document.write('<tr><td><span id=\''  + aa[i][0] + '\'' +
'onmouseover=\"this.style.backgroundColor=\'lightgrey\'\" ' +
'onmouseout=\"this.style.backgroundColor=\'\'\" ' +
'><table width=100% cellpadding=0 cellspacing=0><tr>')
for(j=1;j<aa[i].length;j++){
document.write('<td><center>' + aa[i][j] + '</center></td>')}
document.write('</tr></table></span></td></tr>')}
</script>
</table>
</body></html>
...per quanto riguarda NN, prova a risolvere il problema in altro modo.
Infatti non puoi assegnare lo stile absolute' alla posizione dei livelli
senza compromettere il tutto.
Il principio è cmq quello di inserire nelle diverse righe della tabella un
livello, cui puoi facilmente cambiare dinamicamente il colore di sfondo.
Magari con NN risulta persino più facile costruire la tabella come un
insieme di ilayers sequenziali...ma di NN non so quasi nulla...lascio ad
altri, quindi, il problema.
Spero di esser stato d'aiuto.
dickie


L'allineamento orizzontale, come avevi consigliato tu,  si puo' ottenere
con una ulteriore tabella interna che comunque modifica il layout
aggiungendo uno spazio sotto la tabella; per l'allineamento verticale
non trovo soluzioni nemmeno con la tabella.
Saluti, Paolo

 con una ulteriore tabella interna
Ai tempi c'avevo pensato anche io, ma scartai a priori questa soluzione:
Pensa un attimo: Ora la tua pagina e' di test, ma per una pagina REALE, dove
ci sono magari una serie di dati non indifferenti (lista di files, o che),
significherebbe avere una tabella per OGNI cella...!!!
Tabelle annidate con tabelle... e layers ... Insomma al di la' del casino a
livello di codice che potrebbe venir fuori, non so se lo sai ma NS in
situazioni analoghe sbarella (troppe tables annidate et simili).
Senza contare la pesantezza..
No, no, lascia perdere.
Per l'allineamento orizzontale c'e' una strada mooooolto piu' veloce, e'
sicuramente meno pesante, senza modifiche al layout di sorta.
Mentre per il verticale, bisognerebbe cmq fare qualche accrocchio con le
table... cosa, come ti ho detto, sinceramente da evitare.
Inoltre puoi snellire di parecchio il codice JS, cambiando approccio alla
referenziazione delle celle.. IMVHO, quello che hai usato e' un tantino
macchinoso.
Non sto parlando ovviamente dell'uso dei ILAYER, e' l'unica soluzione
decente per ottenere un effetto simile in NS, anche perche' giocando sul
fatto che IE non li riconosce, giocando anche sul fatto di assegnargli un
NAME invece che un ID, e' possibile standardizzare molto il codice.
P.S.
Ora che NN6 e' uscito, con qualche accorgimento puoi adattare tale script
anche a questo browser.

 macchinoso.
[]
Non mi e' venuto altro in mente, resto in attesa.
Saluti, Paolo

 codice di colorazione celle by 0. ^__^
Dammi qualche altro indizio, ma che sia del SUBJECT, NN non mi da la 
possibilità di fare ricerche nel BODY di un gruppo :-(
Due settimane fa ho scaricato tutto l'archivio di iclj da 
news.libero.it
, sono 
14.000 e passa messaggi nel Netscape (che aggiorno settimanalmente) e il più 
vecchio è del 16/3/2000
-- 
Ciao, Riccardo
------------------------------------------------------------------------
WebMaster: ----> 
http://www.jsdir.com
 <---- (aka 
http://www.jspoint.it
)
------------------------------------------------------------------------
               Nessun traguardo è abbastanza lontano.
------------------------------------------------------------------------

 Non mi e' venuto altro in mente, resto in attesa.
Di cosa? :?

 Di cosa? :?
Di conoscere come gestire l'evento nella cella in modo meno macchinoso.
Saluti, Paolo

 Di conoscere come gestire l'evento nella cella in modo meno macchinoso.
Visto anche la risposta alla domanda precedente ("Se vuoi ti posto un
codice.." - "Certamente."), ho codato ex-novo uno script per la gestione dei
bgcolor nelle celle/righe:
Usa a parer mio un metodo molto meno macchinoso, ha un codice JS decisamente
piu' corto e credo piu' comprensibile, e' abbastanza "elengante" (orientato
ad oggetti), gira indifferentemente su IE 5.0, NS 4.x e NN6.0 (i problemi
inerenti al tuo script su NN6.0 li hai poi corretti? :? ), ha l'allineamento
orizzontale tramite Tag e non tramite tabella, non ha funzioni di init e
tantomeno di resize, agisce direttamente sull'oggetto senza uso di link o di
funzioni di "ricerca" della posizione.
Ha la possibilita' di selezionare un'intera riga dipendentemente da che
cella si clicca (ad esempio, selezionando la prima cella si puo' far si' di
visualizzare solo quella, ma se si seleziona la seconda viene selezionata
tutta la riga
(la maggior parte del codice e' relativa al colorare un'intera riga.. se
avessi dovuto realizzare solo la colorazione di una cella, sarebbe bastata
una sola riga di codice, all'interno della funzione che esegue questa
procedura. ^_^).
Essendo il codice orientato ad oggetti, e' anche molto flessibile, ci sono
un paio di cose che non ho implementato per mancanza di tempo ma
l'implementazione richiede due minuti, o che ho preferito risolvere via HTML
(anche se in maniera in po' meno "fine") rispetto a stilare del codice JS
che magari poi funzionava una volta si e dieci no, su NS.
Inoltre l'approccio logico al problema e' diverso, in modo da differenziare
un minimo questo script dal tuo, e lasciare quindi una sorta di
"possibilita' di scegliere":
Ho pensato questo script per le tabelle di elenchi di file, ad esempio (tipo
una finestra di esplora risorse in "dettagli"), o cmq l'elenco di "database"
(tipo, chesso', un db musicale, con la lista degli autori, canzoni, album,
durata... ).. Una sorta di "griglia", insomma (spero di aver chiarito il
contesto. ^_^).
Per fare questo, ho volentieri rinunciato alla possibilita' di disporre
l'altezza in percentuale o che, a favore di altre funzioni ed una
flessibilita' maggiore.
Volendo, cmq e' possibile implementarla facendo una piccola modifica
(ritorno al discorso del tempo). In questo modo, quindi, i nostri due script
non sono *esattamente* la stessa cosa, e potrebbero essere usati
dipendentemente dal contesto.
Se ti interessa, lo posto su 
www.jsdir.com
 (non l'ho fatto tanto per
distribuirlo, quanto per "esercizio di stile" :) )

 inerenti al tuo script su NN6.0 li hai poi corretti? :? ),
Non lo uso, per ora.

A me interessa e, inoltre, mi sembra il risarcimento minimo ai pazienti
lettori offrire una soluzione del problema, dopo aver prodotto una
discussione cosi' lunga .
Saluti, Paolo

 discussione cosi' lunga .
Eheh, credo che questo thread sia diventato piu' lungo del previsto... :) Ma
cmq dubito che qualche lettore sia stato davvero cosi' paziente da seguirci
in questa lunga discussione. ;)
P.S.
Postero' lo script lunedi' mattina, in quanto il codice e' "residente" sulla
macchina del mio ufficio.

 Speravo tu ci arrivasi da solo. :(
Giusto perche' non si fraintenda,  volevo dire che ti "conosco" ed ho stima
delle tue capacita', e confidavo che avresti risolto da solo.. Mi accorgo
adesso di essermi effettivamente espresso male, scusami.

 ovviamente, non si rifaccia ricorso ad una tabella.
Dipende dal * line-height:0px* che erroneamente e' impostato per tutti
gli ilayer invece che solo per quelli nelle righe singole o con un altro
oggetto interno.
C'e' gia' una versione riveduta.
[]
Saluti, Paolo

 C'e' gia' una versione riveduta.
Ok. :)