Newsgroup: it.comp.lang.javascript
Titolo: link con id e cambio colore

ragazzi ciao a tutti 
allora vi pongo un problema che non so se è risolvibile
io ho un database cosi formulato:
[CODE]
ID  tabulato  descrizione
1    t7896     "ciao"
2    t3562     "addio"
3    t2365     "baci"
1    t7896     "ecc"
1    t7896     "ecc"
[/CODE]
la tabella in asp presenta la stessa struttura ma alla fine ha un link
per ogni riga es
[CODE]
 tabulato  descrizione  visualizza
   t7896     "ciao"       link
   t3562     "addio"      link
   t2365     "baci"       link 
   t7896     "ecc"        link 
   t7896     "ecc"        link
[/CODE]
cliccando sul link faccio aprire un'altra finestra passando l'ID e
questo già lo faccio, ma vorrei anche che nella finestra principale dove
c'è la tabella dopo avere cliccato sul link le righe che presentano l'ID
di riferimento cambiassero colore .
es. se clicco sul link di riferimento all'ID 1 tutte le righe (o il font
o il td) con quell'ID devono diventare di colore rosso..
qualcuno ha un'idea di come fare?
e farmi anche un esempio??
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Cosě di primo acchito darei un name uguale alle tr con id uguale (es.
miatr_id), poi ciclando gli oggetti con getElementsByName setti il
backgroundColor.
Se non ricordo male il backgroundColor, almeno su IE>=5, dovrebbe colorare
anche le td; temo perň sia diverso per il font (quel "o td" che scrivi non
lo ho capito), in tal caso dovresti anche ciclarti le celle nella singola
riga
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M.
--

 riga
-- 


> bè un piccolo esempio?
In effetti getElementsByName non funziona molto bene con IE...dato che mi
ero già fatto la tabella con name ho usato comunque il name per
identificarle; sotto un esempio che cicla la collection rows e colora le
righe con il tr corretto.
Unico neo: mi sembra di ricordare (da verificare) che settando il
backgroundColor con IE4 NON si colorino automaticamente le celle; ripeto: da
verificare; se così è dovrai settare il colore di sfondo per ogni cella
ciclando la collection cols.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>colora</title>
<script type='text/javascript' language='JavaScript'>
 function colora(n) {
  var coll=document.getElementById('tbl');
  for(var _x=0;_x<coll.rows.length;_x++)
   if(coll.rows[_x].getAttribute("name")=='miatr_'+n)
    coll.rows[_x].style.backgroundColor='red';
 }
</script>
</head>
<body>
<table border=1 id='tbl'>
<tr name='miatr_1'><td>colonna1</td><td>colonna 1</td><td><a href='#'
onclick='window.open("about:blank","semprelastessa");colora(1);return
false'>link</a></td></tr>
<tr name='miatr_2'><td>colonna2</td><td>colonna 2</td><td><a href='#'
onclick='window.open("about:blank","semprelastessa");colora(2);return
false'>link</a></td></tr>
<tr name='miatr_3'><td>colonna3</td><td>colonna 3</td><td><a href='#'
onclick='window.open("about:blank","semprelastessa");colora(3);return
false'>link</a></td></tr>
<tr name='miatr_1'><td>colonna1</td><td>colonna 1</td><td><a href='#'
onclick='window.open("about:blank","semprelastessa");colora(1);return
false'>link</a></td></tr>
<tr name='miatr_1'><td>colonna1</td><td>colonna 1</td><td><a href='#'
onclick='window.open("about:blank","semprelastessa");colora(1);return
false'>link</a></td></tr>
<tr name='miatr_1'><td>colonna1</td><td>colonna 1</td><td><a href='#'
onclick='window.open("about:blank","semprelastessa");colora(1);return
false'>link</a></td></tr>
<tr name='miatr_1'><td>colonna1</td><td>colonna 1</td><td><a href='#'
onclick='window.open("about:blank","semprelastessa");colora(1);return
false'>link</a></td></tr>
<tr name='miatr_1'><td>colonna1</td><td>colonna 1</td><td><a href='#'
onclick='window.open("about:blank","semprelastessa");colora(1);return
false'>link</a></td></tr>
<tr name='miatr_2'><td>colonna2</td><td>colonna 2</td><td><a href='#'
onclick='window.open("about:blank","semprelastessa");colora(2);return
false'>link</a></td></tr>
<tr name='miatr_2'><td>colonna2</td><td>colonna 2</td><td><a href='#'
onclick='window.open("about:blank","semprelastessa");colora(2);return
false'>link</a></td></tr>
<tr name='miatr_1'><td>colonna1</td><td>colonna 1</td><td><a href='#'
onclick='window.open("about:blank","semprelastessa");colora(1);return
false'>link</a></td></tr>
</table>
</body>
</html>


ok
ma come faccio a passare il parametro dinamico nella funzione colora 
nell'evento onclick?
es.
d=rs("ID")
onclick=.........colora(d)
capito???
cioè devo passargli un parametro in javascript che posso passare anche
nel
name del tr , ma come si fa a passarglielo anche in javascript
che sarà 
this.tr
o qualcosa del genere?


Beh, stai scrivendo dinamicamente, scrivi l'id nell'onclick lato server
(come fai a scrivere l'id dinamico nella tr? stessa cosa...)


usando i tag Asp
esempio <tr name="<%=id%>" >
in javascript non credo sia possibile utilizzare i tag asp


colora(<%=id%>);


Quindi io potrei utilizzare i tag asp anche all'interno del codice
javascript
cosi?? giusto^?
<tr name="<%=Id%>">
<td>colonna3
</td>
<td>colonna 3</td>
<td>
<a href='#'
onclick='window.open("about:blank","semprelastessa");colora(<%=id%>);return
false'>link</a>
</td>
</tr>


esatto


il tuo esempio č molto buono
ma 1 non riesco a farlo funzionare perchč dovrei anche aggiungergi il
seguente
indirizzo nell'a href
'javascript:ApriFinestra("FindTab.asp?pGetZona=<%=VediZona%>&pAg=<%=Dip%>&pCDI=<%=CDI%>&pData=<%=VisData%>&pProc=<%=Proc%>&pImporto=<%=Import%>&pSegno=<%=vSegno%>&pCodOp=<%=vCodOp%>&Suppl=<%=vSuppl%>&pID=<%=ID_Num%>","","toolbar=no,directories=no,menubar=no,width=500,height=300,scrollbars=yes,resizable=yes,left=100,right=700,top=120"
e poi mi dą errore nell'onclick!!!


 e poi mi dą errore nell'onclick!!!
Il mio esempio a me funziona correttamente (ie6sp1 eng)
a) Hai provato il mio esempio esattamente com'č e non ti funziona? Se sģ che
browser/ver stai usando?
b) Hai modificato il mio esempio e non ti funziona? Se sģ: secondo te se non
posti la modifica che hai provato a fare come faccio ad aiutarti? Sfera
magica? Chiamo Harry Potter? :-)


uso ie6 con service pack 1
ho fatto cosi
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>colora</title>
<script type='text/javascript' language='JavaScript'>
 function colora(n) {
  var coll=document.getElementById('tbl');
  for(var _x=0;_x<coll.rows.length;_x++)
   if(coll.rows[_x].getAttribute("name")=='miatr_'+n)
    coll.rows[_x].style.backgroundColor='red';
 }
</script>
</head>
<body>
<table border=1 id='tbl'>
<tr name='miatr_'+ <%=ID%>><td>colonna1</td><td>colonna 1</td><td>
<a
href="FindTab.asp?pGetZona=<%=VediZona%>&pAg=<%=Dip%>&pCDI=<%=CDI%>&pData=<%=VisData%>&pProc=<%=Proc%>&pImporto=<%=Import%>&pSegno=<%=vSegno%>&pCodOp=<%=vCodOp%>&Suppl=<%=vSuppl%>&pID=<%=ID_Num%>","","toolbar=no,directories=no,menubar=no,width=500,height=300,scrollbars=yes,resizable=yes,left=100,right=700,top=120"
onclick='window.open(this.href);colora(<%=ID%>);return
false'>link</a></td></tr>
è sull'ONCLICK che non so come fare oltre alla funzione colora dovrei
anche
aprire una piccola finestra FindTab per passarci dei parametri...


 aprire una piccola finestra FindTab per passarci dei parametri...
Ma scusa, non c'era quel window.open scritto PRIMA di colora() fatto apposta
per aprire un'altra finestra?
Oltre a quella devi aprirne ancora un'altra?


no 
allora ho fatto cosi ..non mi dà nessun errore ma non mi cambia lo
sfondo delle
celle e nè il colore dei dati
<script type='text/javascript' language='JavaScript'>
 function colora(n) {
  var coll=document.getElementById('tbl');
  for(var _x=0;_x<coll.rows.length;_x++)
   if(coll.rows[_x].getAttribute("name")=='miatr_'+n)
 
    coll.rows[_x].style.backgroundColor='red';
 
 }
</script>
<table id='tbl' border=1>
<%do while not RS.EOF 
   ID_Num=rs("ID")%>
   <tr name='miatr_'+ <%=ID_Num%>>	
      <td>
          nome
      </td>
      <td>
          cognome
      </td>
     <td valign="middle" align="center">
	 <a
href="FindTab.asp?pGetZona=<%=VediZona%>&pAg=<%=Dip%>&pCDI=<%=CDI%>&pData=<%=VisData%>&pProc=<%=Proc%>&pImporto=<%=Import%>&pSegno=<%=vSegno%>&pCodOp=<%=vCodOp%>&Suppl=<%=vSuppl%>&pID=<%=ID_Num%>","","toolbar=no,directories=no,menubar=no,width=500,height=300,scrollbars=yes,resizable=yes,left=100,right=700,top=120"
onclick='window.open(this.href);colora(<%=ID_num%>);return false'>
	 <IMG SRC="../Images/visualizza.gif" border=0>
	</a>
     </td>     
</tr>
<%rs.movenext
loop%>
</table>
   </tr>
</table>


Funzionaaaaaa
perfettamente
avevo sbagliato a passare l'id nel tr
però non mi resetta quelli che erano impostati prima
nel senso che se clicco su un link si colora
ma quando clicco su un'altro il colore di prima rimane non è possibile
resettare
il colore precedente?


 il colore precedente?
Certo che è possibile, solo che non lo avevi richiesto...
Dove c'è il ciclo delle tr, se non le stai colorando, colorale del colore
originale, del tipo:
 if(coll.rows....)
  //qua colori in red;
 else colora nel colore originale


scusa se ti scoccio ancora
ma i problemi sono due
1) io ho impostato per i colori questa funzione che mi permette di avere
colori alternati
i = 0
Function bgcol()
  i = i + 1
  if i = 1 then
    bgcol = "#efefef"
  else
    bgcol = "#d3d3d3"
    i = 0
  end if
End Function 
<tr name='miatr_<%=ID_Num%>' bgcolor="<%=bgcol%>" height=25>
2)impostando l'href in questo modo mi viene aperta la pagina per tutto
lo schermo e non mi prende invece le misure che ho messo io
infatti la pagina doveva comparire come popup cioč ridimensionata
<a
href="FindTab.asp?pGetZona=<%=VediZona%>&pAg=<%=Dip%>&pCDI=<%=CDI%>&pData=<%=VisData%>&pProc=<%=Proc%>&pImporto=<%=Import%>&pSegno=<%=vSegno%>&pCodOp=<%=vCodOp%>&Suppl=<%=vSuppl%>&pID=<%=ID_Num%>","","toolbar=no,directories=no,menubar=no,width=300,height=100,scrollbars=yes,resizable=yes,left=100,right=700,top=120"
onclick='window.open(this.href);colora(<%=ID_num%>);return false'>
<IMG SRC="../Images/visualizza.gif" border=0>
</a>
scusa


per il secondo punto ho risolto
mi manca solo il primo punto
mi aiutiiii???


Come sopra: nell'else (dove stai cambiando colore) assegna uno o l'altro
colore a seconda della posizione.
Hai _x che è la riga nella tabella => if(_x%2==0) colore_righe_pari; else
colore_righe_dispari


mi dà errore !!!!
<script type='text/javascript' language='JavaScript'>
 function colora(n) {
 
  var coll=document.getElementById('tbl');
  for(var _x=0;_x<coll.rows.length;_x++)
 
   if(coll.rows[_x].getAttribute("name")=='miatr_'+n)
 
      coll.rows[_x].style.backgroundColor='#e9967a';
 
   else
	  if (_x%n==0)    //???? cosa ci devo mettere qui????
		 coll.rows[_x].style.backgroundColor='#efefef'; 
	  else  
	     coll.rows[_x].style.backgroundColor='#d3d3d3'; 
	  }
 }
</script>
<SCRIPT LANGUAGE="JavaScript">
<!--
	function ApriFinestra(theUrl,Win,Features) 
	{
 
		newwindow=window.open(theUrl,Win,Features)
		newwindow.creator=self
	}
//-->	
</script>


ho risolto
grazie mille per il tuo aiuto e per la tua disponibilitааа
