Newsgroup: it.comp.lang.javascript
Titolo: Problemi div e dichiarazione xhtml

Ciao a tutti.
Io e un mio amico abbiamo fatto un piccolo script con javascript e i DIVper
fa ruotare delle news.
Il problema è che con la dichiarazione html funziona tutto
mentre con quella xhtml mi si sballa, in particolare su IE.
Quacuno ha idea del motivo ??
Lo script è questo:
---------------------------------------------------------------------------------
<html>
<head></head>
<body>
<table border="1" width="200" height="300" bgcolor="whitesmoke"
cellpadding="0" cellspacing="0">
<tr>
<td valign="top"> Titolo della news
<div id="madre" style="position:relative; background-color:red; top:0px;
left:0px; clip:rect(0px 0px 0px 0px); overflow:hidden; width:200;
height:300; padding-left:5px">
<div background-color:white; onMouseOver="stopmotore()"
onMouseOut="motore()" id="figlio" style="position:relative; top:300px;
left:0px;">
<!--qui le news-->
La mia news <br />
La mia nuova news <br />
La mia ford fiesta <br />
La mia news <br />
La mia nuova news <br />
La mia ford fiesta <br />
<!--news fine-->
</div>
</div>
</td>
</tr>
</table>
<script language="JavaScript">
/*parametri modificabili*/
passo=2;//in px (fluidita')
frequenza=50;//in millisecondi (velocita')
/*non modificare*/
base1=document.getElementById('madre');
base2=document.getElementById('figlio');
start_pos_y=base1.offsetHeight;
max_pos_y=-(parseInt(base2.offsetHeight));
function ruota(){
pos_y=base2.style.top;
nuova_pos=parseInt(pos_y)-passo;
base2.style.top=nuova_pos+"px";
 if (parseInt(base2.style.top)<max_pos_y){
 base2.style.top=start_pos_y;
 }
}
function motore(){
tempo1=self.setInterval("ruota()",frequenza);
}
motore();
function stopmotore(){
clearInterval(tempo1);
}
</script>
</body>
</html> 

 mentre con quella xhtml mi si sballa, in particolare su IE.
[CUT]
Quello che hai scritto contiene decine di proprietà, oggetti etc xhtml non
validi. Perché, per prima cosa, non lo sistemi?
validator.w3.org
 per vedere se è valido (dopo aver messo header xhtml,
ovviamente), e ti visualizza anche i problemi riscontrati.
Una volta reso xhtml-compliant riposta il risultato se hai ancora problemi.
-- 
"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.

 ha scritto nel messaggio 
news:1glmo0d08gqyq$.fwwhdla7wk6f$.dlg@40tude.net...


 
http://prova.equazione.it/scroller05.php
http://validator.w3.org/check?uri=http%3A%2F%2Fprova.equazione.it%2Fscroller05.php
C'è qualcosa che non va perché segnala (a parte varie proprietà non
esistenti) che non hai chiuso il body e manco html; vedendo così al volo
quello che indica il validator sembrerebbe tu non abbia chiuso lo script in
modo corretto. Attenzione al messaggio che ti indica che il "<" non è
valido (occorre racchiudere il javascript in CDATA + rem, del tipo
<script type='text/javascript'>//<![CDATA[
 //qua tuoi scripts
//]]>
</script>
(sarebbe in realtà meglio separare, quindi htm + js + css, ma non è
indispensabile per essere validati).
-- 
"e mai che mi sia venuto in mente
 di essere più ubriaco di voi
 di essere molto più ubriaco di voi"
									  F.D.A.

Ciao,
in realtà avevo usato il validator, infatti mi dava molti errori
rispetto a quelli che hai trovato, tu solo che:
- body e html erano sfuggiti a un taglia incolla....
- background non lo ritenevo un grosso errore e lo avevo asciato, ma
già che c'ero ho sistemato anche quello e l'ho messo nel css...
- per il javascript ho inserito il CDATA come mi hai consigliato...
Ora non mi da errori sul validator, ma il mio problema sussiste
http://prova.equazione.it/scroller05.php
 - qui lo scroller non funziona
http://prova.equazione.it/scroller06.php
 - qui si
Non è che devo mettere una dichiarazione diversa ???
Ciao e grazie
Cristiano Larghi ha scritto:


 
http://prova.equazione.it/scroller05.php
 - qui lo scroller non funziona
manca px, es. width=250. A naso basta aggiungere px alle misure del div con
id="madre" e andrà tutto (c'è anche quel clip di cui non capisco
l'utilizzo).
Prova un po'...
-- 
"E' l' ignoranza che crea l'intolleranza
 di gente cieca e senza coscienza"
									  S.S.S.

 ha scritto nel messaggio 
news:f85m26e1...@ID-147253.user.individual.net...


 ha scritto nel messaggio 
news:f85m26e1...@ID-147253.user.individual.net...


 funziona.
Dai, provaci da solo, la console javascript di firefox è molto chiara a
riguardo sul perché dell'errore...
-- 
"Voi abili a tenere sempre un piede qua e uno là
 avrete un avvenire certo in questo mondo qua
 però la dignità
 dove l'avete persa?"
									    V.R.

 ha scritto nel messaggio 
news:woub9skj...@ID-147253.user.individual.net...


 Dichiarazione tralasciata.
Esatto ... collegandolo poi all'altro problema (a naso è lo stesso
problema, visto che oltretutto parla di top, no?)
Visto che si scatena solo quando deve riniziare lo scorrimento l'errore è
quasi sicuramente qua:
if (parseInt(base2.style.top) < max_pos_y){
base2.style.top=start_pos_y;
}
Come mai per spostarlo usi
 base2.style.top=nuova_pos+"px";
e invece qua non aggiungi il px?
-- 
"Ho smesso di fumare.
 Vivrò una settimana di più.
 E in quella settimana pioverà a dirotto"
									    W.A.

Ancora una volta avevi ragione.
L'errore era qui:
dovevo mettere
base2.style.top=start_pos_y+"px";
invece di
base2.style.top=start_pos_y;
