Newsgroup: it.comp.lang.javascript
Titolo: visualizzare un elemento di un array ogni tot secondi in sequenza

qualcuno mi ha consigliato questo codice, ho provato a copiarlo e incollarlo 
in una pagina html ma non funziona, mi sapreste aiutare a capire cosa non 
và?  Grazie
<html>
<head>
<title></title>
</head>
<body>
<div id="displaye"></div>
<script type="text/javascript">
var phrases=["Cantami o diva","del pelide achille","l'ira funesta"],
nx=0,
oD=null;
window.onload=function(){
if (document.getElementById && (oD=document.getElementById("displayer"))
){
oD.innerHTML=phrases[nx++];
setInterval(function(){
oD.innerHTML=phrases[nx++];
if (nx==phrases.length) nx=0;
},1500);
}else{
alert("Errore: Impossibile referenziare l'oggetto; o mancato supporto
del DOM w3c");
}
}
</script>

 <div id="displaye"></div>
a parte la sintassi stile spaghetti, se non indichi l'id corretto non
vedrai proprio niente:
<div id="displayer"></div>
-- 
artemis.alpeia

 <script type="text/javascript">
[cut]
L'indentazione, ricordati una corretta indentazione.. altrimenti non ci si
capisce molto.
-- 
ZER0://coder.gfxer.web-designer/
~ Ci siamo fatti una scopata cosi' eccezionale che anche i vicini hanno
fumato una sigaretta.
on air ~ "Unknown Artist - Track 5"

ho provato cosi ma nulla a me non và potete provarlo in una pagina html voi 
esperti?
<div id="pippo" style="position:absolute; left:81px; top:21px; width:281px; 
height:32px; z-index:1">
  <script type="text/javascript">
var phrases=["Cantami o diva","del pelide achille","l'ira 
funesta"],nx=0,oD=null;
window.onload=function(){
if (document.getElementById && (oD=document.getElementById("displayer"))
){
oD.innerHTML=phrases[nx++];
setInterval(function(){
oD.innerHTML=phrases[nx++];
if (nx==phrases.length) nx=0;
},1500);
}else{
alert("Errore: Impossibile referenziare l'oggetto; o mancato supporto
del DOM w3c");
}
}
</script>
</div>
Grazie a tutti. 

 if (document.getElementById && (oD=document.getElementById("displayer"))
[cut]
ma hai provato a correggere l'errore che ti ho indicato nel post
precedente, e soprattutto, hai provato il codice di Zer0 senza modificare
una virgola?
-- 
artemis.alpeia

 una virgola?
Il mio codice originale aveva l'ID dell'elemento sbagliato, come ho gia'
scritto.. Ma a parte quello, dovrebbe effettivamente funzionare tutto.
-- 
ZER0://coder.gfxer.web-designer/
~ Tutti quelli che credono nella psicocinesi, per favore alzino la mia
mano.

 esperti?
Ribadisco: studiati un po' di basi di JS.
Come pretendi che possa funzionare il codice, cosi' come l'hai riscritto
tu?
Inoltre, come dico sempre, scrivere "a me non va" non significa nulla. Vuol
dire solo che non da' l'effetto da te voluto, ma un effetto lo da' sempre e
cmq. Quindi la domanda e': che effetto hai? Inoltre, il codice che ti ho
scritto originariamente - come mi pare di aver gia' scritto - aveva un
controllo minimale su questo tipo di errori e quindi quantomeno dovrebbe
darti CHIARAMENTE il messaggio di errore relativo.. a meno che non vi siano
altri errori JS (ad esempio, tu hai levato tutte le tabulazioni, non vorrei
avessi modificato altro).
-- 
ZER0://coder.gfxer.web-designer/
~ Come devo regolare la stampante laser per stordire?
(How do I set a laser printer to stun?)


ok ci provo grazie. 

questo è il codice ASP che utilizzo per assegnare i record all'array
<%
session("accesso") = true
Session.Timeout = 60
'mi connetto al db
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & 
Server.MapPath("/dbase/db.mdb") & ";pwd=123456"
'estrapolo le news e le assegno ad un array
strSQL = "SELECT * FROM news ORDER BY data DESC"
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, objConn
%>
<script language="JavaScript">
var conta = new Array();
<%
i = 0
do while not(objRS.eof)
%>
conta[<%=i%>] = "<%=Replace(Objrs("news"),"""","\""")%>";
<%
i = i + 1
objRS.movenext
loop
%>
</script>
poi però zero mi ha consigliato il codice qui sotto per visualizzare gli 
elementi dell'array uno ogni tot secondi e poi ripartire dal primo quando 
sono in fondo
io lo provato ma a me non funziona, qualcuno lo ha provato?
fatemi sapere se a qualcuno funziona, grazie a tutti.


> <div id="displaye"></div>
Non per insistere, ma hai corretto l'id?
-- 
"Affacciati affacciati benedici, guardaci
 guardaci...guardaci!
 Tanto sono quasi duemila anni che stai a guardare!"
									    E.B.

 Non per insistere, ma hai corretto l'id?
IMVHO, no.
-- 
ZER0://coder.gfxer.web-designer/
~ "Problemi" e' il nome che gli informatici danno a quelli che
comunemente verrebbero definiti "disastri"; altrimenti si chiamano
"features".

 -- 
scusa la mia ignoranza totale ma 'id cosa è il nome del layer? 

 scusa la mia ignoranza totale ma 'id cosa è il nome del layer?
scusa te, ma hai letto *tutti* i messaggi di Zer0? Ti ha scritto più volte
che è errato l'id, e di sostituire id='displaye' con id='displayer' (manca
una erre)...
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.


questo è il codice che ho usato nella mia pagina html  come vedi c'è la R ma 
a qualcuno di voi funziona sto codice?
a me non visualizza nulla.
<html>
<body>
<div id="displayer"></div>
<script type="text/javascript">
var phrases=["Cantami o diva","del pelide achille","l'ira funesta"],
nx=0,
oD=null;
window.onload=function(){
if (document.getElementById && (oD=document.getElementById("displayer"))
){
oD.innerHTML=phrases[nx++];
setInterval(function(){
oD.innerHTML=phrases[nx++];
if (nx==phrases.length) nx=0;
},1500);
}else{
alert("Errore: Impossibile referenziare l'oggetto; o mancato supporto
del DOM w3c");
}
}
</script>
</body>
</html>

 a qualcuno di voi funziona sto codice?
Copia-incolla: 
http://www.criosoftware.it/Simba833.htm
Perfetto (cvd)


 -- 
fantastico! senti siccome io ho un array di questo tipo, come lo sostituisco 
a quelle 3 frasi di esempio in questa pagina?
ovvero prima di utilizzare l'array eseguo questo codice per prelevare i 
record ed assegnarli all'array di nome tickercontents
--- code ----
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & 
Server.MapPath("/dbase/db.mdb") & ";pwd=123456"
strSQL = "SELECT * FROM news ORDER BY data DESC"
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, objConn
objRS.movefirst
do while not(objRS.eof)
intnumero=10
%>
<script language="JavaScript">
tickercontents[<%=intNumero%>]='<table width=100%><tr><td><font face=verdana 
size=2><%=objRS("banner")%></table>'
</script>
<%
intNumero = intNumero + 1
objRS.movenext
loop
objRS.Close
Set objRs = Nothing
objConn.Close
Set objConn = Nothing
%> 

 fantastico! 
Posso piangere..?
-- 
ZER0://coder.gfxer.web-designer/
~ "L'unica persona che mi chiama con un numero che non conosco
e' il mio ragazzo." (Linda)
on air ~ "YUKI - Home Sweet Home"

 a quelle 3 frasi di esempio in questa pagina?
Prima di metter mano a quell'obbrobrio di vbscript mi spieghi perché per
giorni hai scritto che non funzionava nulla e con la mia pagina
(copia-incolla della funzione di Zer0) invece scrivi "fantastico"?
Hai trovato l'errore che facevi?
Oppure non ci avevi manco provato?
(sai, la pappa pronta va bene ma fino a un certo punto...)
In generale da asp devi generare l'array, piů o meno come hai fatto per
quel ticketcontents...provaci e poi posta quello che hai prodotto.
-- 
"Ti sei salvato
 o sei entrato in banca pure tu?"
									    A.V.


si certo guarda che pinagere fà bene 

     A.V.
non è n discorso di pappa pronta ma di javascript non ne capisco quasio 
nulla
altrimenti non sarei qui a chiedervi aiuto, i pezzi di codice che sto usando 
li ho ricostruiti con il vostro aiuto.

 li ho ricostruiti con il vostro aiuto.
Ok, se č cosě vuol dire che avevi provato in tutti i modi la function di
Zer0 ma qualcosa era errato.
Attendiamo allora di vedere quello che hai fatto con asp per darti una
mano.
-- 
"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.

..provaci e poi posta quello che hai prodotto.
questo è il codice da me ottenuto con i vostri aiuti ovvero prima prelevo i 
record con asp e li assegno ad un array  di nome phrases
poi dovrebbe entrare il vostro script di cui ho fatto copia incola e che con 
le 3 frasi messe prima andava mentre con questo array
preso dal db non visualizza nulla.
qualcuno può provare questo codice e dirmi secondo voi cosa sbaglio?
grazie in anticipo
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & 
Server.MapPath("/dbase/db.mdb") & ";pwd=123456"
strSQL = "SELECT * FROM news ORDER BY data DESC"
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, objConn
objRS.movefirst
do while not(objRS.eof)
intnumero=10
%>
<script language="JavaScript">
phrases[<%=intNumero%>]='<table width=100%><tr><td><font face=verdana 
size=2><%=objRS("banner")%></table>'
</script>
<%
intNumero = intNumero + 1
objRS.movenext
loop
objRS.Close
Set objRs = Nothing
objConn.Close
Set objConn = Nothing
%>
<div id="displayer"></div>
<script language="JavaScript">
<!--
function SymError()
{
  return true;
}
window.onerror = SymError;
var SymRealWinOpen = window.open;
function SymWinOpen(url, name, attributes)
{
  return (new Object());
}
window.open = SymWinOpen;
//-->
</script>
<script type="text/javascript">
nx=0,
oD=null;
window.onload=function(){
if (document.getElementById && (oD=document.getElementById("displayer"))){
oD.innerHTML=phrases[nx++];
setInterval(function(){
oD.innerHTML=phrases[nx++];
if (nx==phrases.length) nx=0;
},1500);
}else{
alert("Errore: Impossibile referenziare l'oggetto; o mancato supporto del 
DOM w3c");
}
}
</script>
<script language="JavaScript">
<!--
var SymRealOnLoad;
var SymRealOnUnload;
function SymOnUnload()
{
  window.open = SymWinOpen;
  if(SymRealOnUnload != null)
     SymRealOnUnload();
}
function SymOnLoad()
{
  if(SymRealOnLoad != null)
     SymRealOnLoad();
  window.open = SymRealWinOpen;
  SymRealOnUnload = window.onunload;
  window.onunload = SymOnUnload;
}
SymRealOnLoad = window.onload;
window.onload = SymOnLoad;
//-->
</script>

 window.onload = SymOnLoad;
Ah, ma allora è questa onload? E l'altra?
C'è molta confusione nel codice, hai settato onload più volte e, temo, in
questo modo "vince l'ultima"...
Se sono più di una richiama la seconda al termine della prima (oppure
elencale onload separandole con ;. Non ho mai provato usando += ma non
credo che javascript lo supporti...)


 questo modo "vince l'ultima"...
diciamo che non ho notato degli onload multipli in quanto non ci capisco 
quasi nulla quindi se
ce ne sono uno o 4 per me fa lo stesso :)
il fatto è che il vostro codice funziona, il mio asp che assegna i valori 
all'array anch'esso dovrebbe
funzionare
ma insieme è uscito il codice di cui sopra nel post precedente, credo un 
brutto minestrone
qualcuno sa dirmi come aggiustarlo per farlo funzionare? Grazie in ogni 
caso. 

 qualcuno sa dirmi come aggiustarlo per farlo funzionare? 
Te l'ho scritto sopra come fare: chiama la seconda function al termine
della prima
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.