Newsgroup: it.comp.lang.javascript
Titolo: Visualizzare (o focus) riga in scrollbar

Ciao a tutti,
Allora iniziamo e spero di riuscire a spiegarmi :)
Ho una tabella contenuta in un div. Di questa tabella visualizzo due
righe e quando ce ne sono di più viene mostrata ovviamente una
scrollbar. In queste righe ci sono delle combobox e textbox. Una volta
confermata la propria scelta effettuo delle funzioni e poi ripresento i
campi disabilitati.
Ed ecco che arriva il problema....come faccio a far visualizzare la
riga selezionata dall'utente se non è fra le prime 2? Ovvero ora
l'utente dovrebbe "manualmente" scendere con la scrollbar mentre io
vorrei ripresentare la pagina con la riga che l utente aveva
precedentemente selezionato...
Ho provato dando il focus (con oggetto.focus()), alla riga, al radio
button, alla combo e alla text, ma niente da fare.
Mi potete aiutare?
Grazie

 precedentemente selezionato...
Scritto al volo, non testato:
function setRowInViewport(iRow){
	if (!document.getElementById)
		return;
	var cont=document.getElementById("mycontainer"),
		rows;
 
	if (cont){
		rows=cont.getElementsByTagName("tr");
		if (typeof cont.scrollTop!="undefined" && rows[iRow])
			cont.scrollTop=rows[iRow].offsetTop||0;
	}
}
Alla funzione passi l'indice della riga che t'interessa.
P.S.
Sei lo stesso PdG dei forum sui CdZ, suppongo..?
-- 
ZER0
~ .. six thousand and forty five days, nine hours, sixteen minutes, thirty nine seconds.
That is when the world ended.

>Sei lo stesso PdG dei forum sui CdZ, suppongo..?
Se parli del forum di Eoni fa allora sì :)

 Se parli del forum di Eoni fa allora sì :)
Sisi, di quello parlavo. Ben ritrovato ;)
-- 
ZER0
~ .. six thousand and forty five days, nine hours, fifty three minutes, fourteen seconds.


Sì beh è infatti quello che ho fatto subito quello di cambiar il nome
:)
PS ben ritrovato anche a te :)

 PS ben ritrovato anche a te :)
Danke :)
-- 
ZER0
~ .. six thousand and forty five days, ten hours, two minutes, twenty two seconds.


La richiamo a caricamento della pagina ma l elemento è disponibile in
quantose faccio un alert(document.getElementbyId("tableContainer").id)
questo viene visualizzato correttamente....

 questo viene visualizzato correttamente....
Si, ma tale alert lo fai all'interno della funzione, o immediatamente prima
di richiamare la stessa?
Se cosě č, e ti risponde correttamente, allora devi aver per forza
sbagliato a scrivere l'id nell'assegnazione di "cont", altrimenti non si
spiega come mai esso non assuma il valore del tuo div.
-- 
ZER0
~ .. six thousand and forty five days, ten hours, twelve minutes, twenty nine seconds.


A caricamento pagina significa che nella pagina in fondo ho un tag
script che richiama la funzione
l'alert lo faccio nella funzione sotto all'assegnazione di cont

 l'alert lo faccio nella funzione sotto all'assegnazione di cont
Scusa, ma se è come dici, significa che nella funzione hai:
var cont=document.getElementById("tableContainer");
 
	alert(document.getElementById("tableContainer").id);
	alert(
cont.id
);
Non puoi fisicamente avere dei valori diversi. Potrà essere "undefined" se
vuoi, ma deve essere "undefined" per entrambi.
Posta il codice, o l'URL della pagina, e vediamo dov'è l'inghippo.
-- 
ZER0
~ .. six thousand and forty five days, ten hours, twenty four minutes, fifty nine seconds.


questo è il codice JS che ho ricavato dalla tua funzione
function cardIssueFocus()
{
var counter = document.getElementById("countHolder").value;
	objAccountBranch = document.getElementById("accountBranch");
	objArray = document.getElementsByName("pinRefNum");
	document.getElementById("cardType").value =
document.getElementById("cardTypeCombo").value;
	if(document.getElementById("preContractCheck").checked)
		document.getElementById("preContract").value = "S";
	else
		document.getElementById("preContract").value = "N";
	if(counter>1)
	{
		for(var i=0;i<counter;i++)
		{
			var j = i+1;
			ndg = document.getElementById("ndg_" + j).value;
			ndgRadio = document.getElementById(ndg);
			if(ndgRadio.checked)
			{
				var objDiv=document.getElementById("tableContainer");
				cont=objDiv.rows;
				alert(objDiv.id);
				alert(cont);
		        objRows=cont.getElementsByTagName("tr");
				alert(objRows);
        	        //if (typeof cont.scrollTop!="undefined" && rows[i])
            	            cont.scrollTop=objRows[i].offsetTop;
 
 
			}
		}
	}

 				cont=objDiv.rows;
rows non esiste come proprietà di un elemento div. Come ti dicevo, hai
fatto un po' di confusione. Questo è il codice che ti ho scritto:
	var cont=document.getElementById("mycontainer"),
		rows;
 
	if (cont){
		rows=cont.getElementsByTagName("tr");
etc.
Quindi il codice che hai scritto:
	var objDiv=document.getElementById("tableContainer");
		cont=objDiv.rows;
		alert(objDiv.id);
		alert(cont);
	        objRows=cont.getElementsByTagName("tr");
		alert(objRows);
      	        //if (typeof cont.scrollTop!="undefined" && rows[i])
		cont.scrollTop=objRows[i].offsetTop;
Diventa, se vuoi mantenere la dicitura objDiv/objRows, e senza fare i vari
check (cosa che puoi omettere SOLO se non si tratta di un sito web, ma di
una web application dove sei sicuro che il browser usato è di un certo
tipo):
	var objDiv=document.getElementById("tableContainer"),
		objRows=objDiv.getElementsByTagName("tr");
 
	objDiv.scrollTop=objRow[i].offsetTop;
Fammi sapere :)
(ovviamente "i" deve essere un valore valido nel range delle righe)
-- 
ZER0
~ .. six thousand and forty five days, ten hours, thirty eight minutes, thirty four seconds.


effettivamente sto google gruppi non che funzi bene...mi taglia un po
di roba e ho ricopiato pure male :)
Allora quello che ho fatto io è questo
				var cont=document.getElementById("tableContainer");
				var objRows;
			if (cont){
		        objRows=cont.getElementsByTagName("tr");
        	       if (typeof cont.scrollTop!="undefined" && objRows[i])
        	       {
        	       			alert(cont.scrollTop);
            	            cont.scrollTop=objRows[i].offsetTop;
							alert(cont.scrollTop);
					}
			}
Gli errori effettivamente non ci sono però la scrollbar non se ne va
giù manco a morir :(

 giů manco a morir :(
Con che browser stai testando?
offsetTop/scrollTop fanno parte del DOM level 0, non č detto che siano
presenti o correttamente supportati in tutti i browser. Su IE / browser
Gecko non dovrebbero esserci problemi, comunque.
-- 
ZER0
~ .. six thousand and forty five days, ten hours, fifty seven minutes, forty nine seconds.


IE.... :(

 IE.... :(
Ora devo scappare, ti ho messo on line il sorgente:
 
http://beats.daily.it/iclj/playdigemini.htm
Così evitiamo che google ci metta lo zampino.
Guarda se quella pagina ti funziona, e in quel caso copia il codice da li
e/o verifica le discrepanze con il tuo.
Quel sorgente su IE e Firefox funzia.
P.S. il pulsante imposta la terza riga.
-- 
ZER0
~ .. six thousand and forty five days, eleven hours, three minutes, fifty six seconds.


 Ora devo scappare, ti ho messo on line il sorgente:
grazie mille ho appena testato la tua pagina e funziona...domani proverň a
metterlo nel mio codice...
--
Se hai un nemico.....siediti sul fiume e aspetta...
Vedrai il suo cadavere passare.....
Play di Gemini IhggherD #99
www.gdritalia.org

 metterlo nel mio codice...
Perfetto. Se hai problemi fammi sapere.
-- 
ZER0
~ .. six thousand and forty five days, sixteen hours, fifty nine minutes, fifty two seconds.
That is when the world was ended.
on air ~ "  INCOMPLETE   Limp Bizkit-Behind blue eyes3e4fa6cc7b380482d108e1dbd04d98950042480000800000ac440000010f"

Allora ho provato il tuo codice facendo una pagina html normale con i
miei campi...e funziona...a sto punto sbaglio qualcosa io nei controlli
precedenti....grazie ora mi sbatterò per veder dove sbaglio :)