Newsgroup: it.comp.lang.javascript
Titolo: Validazione di un javascript

Ciao a tutti,
sono alle prime armi con i Javascript
e sono alle prese con un problema di validazione.
Ho un javascript che fa seguire
un serpentone di testo al puntatore del mouse
(lo conoscerete già tutti, credo)
su Explorer mi sembra funzioni
ma il validator di 
www.w3.org
 mi dà un errore.
L'errore è:
"Line 60, column 26:
      document.write("</span>")}
                            ^
Error:  end tag for element "SPAN" which is not open; try removing the end
tag or check for improper nesting of elements"
Il codice è il seguente
(un po' lungo... qualcuno sa accorciarlo? :o)) :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html;
 charset=utf-8">
<style type="text/css">
.spanstyle {color: black; font-family: Verdana; font-size: 10pt;
font-weight: bold; position: absolute; top: -50px; visibility: visible}
</style>
<script type="text/javascript">
var x,y
var step=20
var flag=0
var message="La mia scritta "
message=message.split("")
var xpos=new Array()
for (i=0;i<=message.length-1;i++) {
 xpos[i]=-50}
var ypos=new Array()
for (i=0;i<=message.length-1;i++) {
 ypos[i]=-50}
function handlerMM(e){
 x = (document.layers) ? e.pageX : document.body.scrollLeft+event.clientX
 y = (document.layers) ? e.pageY : document.body.scrollTop+event.clientY
 flag=1}
function makesnake() {
 if (flag==1 && document.all) {
     for (i=message.length-1; i>=1; i--) {
      xpos[i]=xpos[i-1]+step
   ypos[i]=ypos[i-1]}
  xpos[0]=x+step
  ypos[0]=y
  for (i=0; i<message.length-1; i++) {
      var thisspan = eval("span"+(i)+".style")
      thisspan.posLeft=xpos[i]
   thisspan.posTop=ypos[i]}}
  else if (flag==1 && document.layers) {
     for (i=message.length-1; i>=1; i--) {
      xpos[i]=xpos[i-1]+step
   ypos[i]=ypos[i-1]}
  xpos[0]=x+step
  ypos[0]=y
  for (i=0; i<message.length-1; i++) {
      var thisspan = eval("document.span"+i)
      thisspan.left=xpos[i]
   thisspan.top=ypos[i]}}
  var timer=setTimeout("makesnake()",1)}
</script>
</head>
<body onload="makesnake()" style="overflow-x: hidden; overflow-y: scroll;">
<script type="text/javascript">
for (i=0;i<=message.length-1;i++) {
    document.write("<span id='span"+i+"' class='spanstyle'>")
    document.write(message[i])
    document.write("</span>")}
if (document.layers){
 document.captureEvents(Event.MOUSEMOVE);}
document.onmousemove = handlerMM;
</script>
</body></html>
Conto sul vostro aiuto,
grazie!
MaRoK

 end tag or check for improper nesting of elements"
Non ti preoccupare, in validatore fa un po' casino con il JavaScript 
embedded. Se vuoi validare, ti conviene spostare il JavaScript su un 
file esterno (e ne guadagni anche in gestibilita` e caching).
-- 
A risentirci
\  Davide G. Borin
\\ !!Scudo anti-spam attivo!! Togliere le x e "eliminami" dall'indirizzo
\\\_____________________________________________________________________

 ma il validator di 
www.w3.org
 mi dà un errore.
Evidentemente il validatore del w3c considera il codice JavaScript come
HTML, e da ciò deriva l'errore. La pagina però viene visualizzata
correttamente dai browser (se lo script è corretto), quindi non ti devi
preoccupare.
In ogni caso puoi racchiudere lo script in un commento:
<script language="JavaScript">
<!--
[qui metti lo script]
// -->
</script>
G. G.

file esterno (e ne guadagni anche in gestibilita` e caching).
Ottima idea,
tutto funziona e il guadagno è notevole,
grazie!!!
MaRoK

</script>
Ti ringrazio, ma il validatore ignora il commento
(nel senso che cerca di validare lo stesso!)
Ho risolto richiamando il javascript da un file esterno!
MaRoK

So che hai già risolto, ma così, a scopo didattico... se provassi con
document.write("</sp"+"an>")}
Ti da cmq l'errore?
A presto!
--
Roberto e Alessandro Abbate
Moderatori di it.comp.www.html
http://www.Risorse.net
, 
http://MigliorHosting.it

Ti da cmq l'errore?
Sì:
Line 83, column 24:
      document.write("</sp"+"an>")}
                          ^
Error:  delimiter """ invalid
Line 83, column 24:
      document.write("</sp"+"an>")}
                          ^
Error:  end tag for element "SP" which is not open; try removing the end tag


Azz... quanto č stupido il validatore :))
document.write("<"+"/"+"s"+"p"+"a"+"n"+">")}
dovresti provare a spezzettarlo cosě ;)
puoi provare? grazie 1000 :)
A presto


puoi provare? grazie 1000 :)
Funziona! :o)))
Tra l'altro, qualcuno ha mica idea
del perché questo serpentone
funziona solo su Explorer?
Opera e Netscape non supportano
tutti i javascript?
(il codice č all'inizio del thread)

 (il codice è all'inizio del thread)
Sicuro?
Ns 4.x lo vede perfettamente.
Opera 5.01 no, ma bisognerebbe testare lo script con il nuovo 6.
A presto!


Ns 4.x lo vede perfettamente.
Veramente? :o)
Ns 6 no!!!!!!!!!!
Mah... chi ci capisce qualcosa... :o)

 Mah... chi ci capisce qualcosa... :o)
Già... guarda il link che ti passo, è la demo n.3. Funziona su Ns 4.x e Ms
Ie dalla 5 in poi (la 4 non so).
http://www.risorse.net/dhtml/testo


Opera e Netscape non supportano tutti i javascript?
Al contrario, Opera e soprattutto Netscape 6.x hanno il supporto JS 
migliore e piu` standard, ma se usi cose proprietarie di IE o di NS 4.x 
sei, ovviamente, fregato.
Sapessi quante cose si possono fare con NS 6.x che con IE neanche ti 
sogni...
Prova a guardarti:
 
http://developer.netscape.com/evangelism/
 
http://www.opera.com/support/service/javascript/



http://www.risorse.net/dhtml/testo
Eheheh! :o)
Il tuo codice č praticamente identico al mio!!!
E infatti... non funziona su Netscape 6
(o sono io che c'ho una versione bacata?)
Perņ funziona su Ms Ie 4.0!
MaRoK