Message qui défilent

Linoa05
Invité n'ayant pas de compte PHPfrance

28 sept. 2005, 16:33

Bonjour,
je suis en train de migrer mes pages vers du XHTML. Et dans une des pages j'ai des messages qui défilent.
Quand je valide ma page cela me met pas mal d'erreurs a cet endroit.
Voici le code :

Code : Tout sélectionner

<script type="text/javascript" language="JavaScript1.2"> //configurer les 3 variables suivantes pour la hauteur, la largeur et le fond de la zone defilante. var scrollerwidth=220 var scrollerheight=60 var scrollerbgcolor='white' //configurer les variables suivantes pour le contenu de vos messages. var messages=new Array() messages[0]="<p class="texte" style="text-align: left;FONT-SIZE: 10pt; font-weight: bold;"><a href="oral.php" onclick="\javascript:window.open(this.href,'popup','resizable=0,height=690,width=550');return false;\ class=texte style='FONT-SIZE: 10pt; font-weight: bold;text-align: left;'"><font color="#CC0000" style="text-align: left;FONT-SIZE: 10pt; font-weight: bold;"><b>Préparation intensive à l'oral</b></font></a></p><p class="texte" style="FONT-SIZE: 3pt;">&nbsp;</p><p class="texte" style="text-align: left;FONT-SIZE: 10pt; font-weight: bold;"><a href="complete.php" onclick="\javascript:window.open(this.href,'popup','resizable=0,height=690,width=550');return false;\ class=texte style="text-align: left;FONT-SIZE: 10pt; font-weight: bold;'"><font color="#CC0000" style="text-align: left;FONT-SIZE: 10pt; font-weight: bold;"><b>Concours de septembre (écrit+oral)</b></font></a></p>" messages[1]="<p class="texte" style="text-align: left;FONT-SIZE: 10pt; font-weight: bold;"><a href="oral.php" onclick="\javascript:window.open(this.href,'popup','resizable=0,height=690,width=550');return false;\ class=texte style='FONT-SIZE: 10pt; font-weight: bold;text-align: left;'"><font color="#CC0000" style="text-align: left;FONT-SIZE: 10pt; font-weight: bold;"><b>Préparation intensive à l'oral</b></font></a></p><p class="texte" style="FONT-SIZE: 3pt;">&nbsp;</p><p class="texte" style="text-align: left;FONT-SIZE: 10pt; font-weight: bold;"><a href="complete.php" onclick="\javascript:window.open(this.href,'popup','resizable=0,height=690,width=550');return false;\ class=texte style="text-align: left;FONT-SIZE: 10pt; font-weight: bold;'"><font color="#CC0000" style="text-align: left;FONT-SIZE: 10pt; font-weight: bold;"><b>Concours de septembre (écrit+oral)</b></font></a></p>" messages[2]="<p class="texte" style="text-align: left;FONT-SIZE: 10pt; font-weight: bold;"><a href="oral.php" onclick="\javascript:window.open(this.href,'popup','resizable=0,height=690,width=550');return false;\ class=texte style='FONT-SIZE: 10pt; font-weight: bold;text-align: left;'"><font color="#CC0000" style="text-align: left;FONT-SIZE: 10pt; font-weight: bold;"><b>Préparation intensive à l'oral</b></font></a></p><p class="texte" style="FONT-SIZE: 3pt;">&nbsp;</p><p class="texte" style="text-align: left;FONT-SIZE: 10pt; font-weight: bold;"><a href="complete.php" onclick="\javascript:window.open(this.href,'popup','resizable=0,height=690,width=550');return false;\ class=texte style="text-align: left;FONT-SIZE: 10pt; font-weight: bold;'"><font color="#CC0000" style="text-align: left;FONT-SIZE: 10pt; font-weight: bold;"><b>Concours de septembre (écrit+oral)</b></font></a></p>" messages[3]="<p class="texte" style="text-align: left;FONT-SIZE: 10pt; font-weight: bold;"><a href="oral.php" onclick="\javascript:window.open(this.href,'popup','resizable=0,height=690,width=550');return false;\ class=texte style='FONT-SIZE: 10pt; font-weight: bold;text-align: left;'"><font color="#CC0000" style="text-align: left;FONT-SIZE: 10pt; font-weight: bold;"><b>Préparation intensive à l'oral</b></font></a></p><p class="texte" style="FONT-SIZE: 3pt;">&nbsp;</p><p class="texte" style="text-align: left;FONT-SIZE: 10pt; font-weight: bold;"><a href="complete.php" onclick="\javascript:window.open(this.href,'popup','resizable=0,height=690,width=550');return false;\ class=texte style="text-align: left;FONT-SIZE: 10pt; font-weight: bold;'"><font color="#CC0000" style="text-align: left;FONT-SIZE: 10pt; font-weight: bold;"><b>Concours de septembre (écrit+oral)</b></font></a></p>" ///////Do not edit pass this line/////////////////////// if (messages.length>1) i=2 else i=0 function move1(whichlayer){ tlayer=eval(whichlayer) if (tlayer.top>0&&tlayer.top =tlayer.document.height*-1){ tlayer.top-=5 setTimeout("move1(tlayer)",100) } else{ tlayer.top=scrollerheight tlayer.document.write(messages[i]) tlayer.document.close() if (i==messages.length-1) i=0 else i++ } } function move2(whichlayer){ tlayer2=eval(whichlayer) if (tlayer2.top>0&&tlayer2.top<=5){ tlayer2.top=0 setTimeout("move2(tlayer2)",5000) setTimeout("move1(document.main.document.first)",5000) return } if (tlayer2.top>=tlayer2.document.height*-1){ tlayer2.top-=5 setTimeout("move2(tlayer2)",100) } else{ tlayer2.top=scrollerheight tlayer2.document.write(messages[i]) tlayer2.document.close() if (i==messages.length-1) i=0 else i++ } } function move3(whichdiv){ tdiv=eval(whichdiv) if (tdiv.style.pixelTop>0&&tdiv.style.pixelTop<=5){ tdiv.style.pixelTop=0 setTimeout("move3(tdiv)",5000) setTimeout("move4(second2)",5000) return } if (tdiv.style.pixelTop>=tdiv.offsetHeight*-1){ tdiv.style.pixelTop-=5 setTimeout("move3(tdiv)",100) } else{ tdiv.style.pixelTop=scrollerheight tdiv.innerHTML=messages[i] if (i==messages.length-1) i=0 else i++ } } function move4(whichdiv){ tdiv2=eval(whichdiv) if (tdiv2.style.pixelTop>0&&tdiv2.style.pixelTop<=5){ tdiv2.style.pixelTop=0 setTimeout("move4(tdiv2)",5000) setTimeout("move3(first2)",5000) return } if (tdiv2.style.pixelTop>=tdiv2.offsetHeight*-1){ tdiv2.style.pixelTop-=5 setTimeout("move4(second2)",100) } else{ tdiv2.style.pixelTop=scrollerheight tdiv2.innerHTML=messages[i] if (i==messages.length-1) i=0 else i++ } } function startscroll(){ if (document.all){ move3(first2) second2.style.top=scrollerheight } else if (document.layers){ move1(document.main.document.first) document.main.document.second.top=scrollerheight+5 document.main.document.second.visibility='show' } } window.onload=startscroll <ilayer id="main" width="&{scrollerwidth};" height="&{scrollerheight};" bgcolor="&{scrollerbgcolor};"></ilayer> <layer id="first" left="0" top="1" width="&{scrollerwidth};"> <ilayer id="main" width="&{scrollerwidth};" height="&{scrollerheight};" bgcolor="&{scrollerbgcolor};"><script type="text/javascript" language="JavaScript1.2"> if (document.layers) document.write(messages[0]) </script></ilayer> </layer> <layer id="second" left="0" top="0" width="&{scrollerwidth};" visibility="hide"> <script type="text/javascript" language="JavaScript1.2"> if (document.layers) document.write(messages[1]) </script> </layer> <script type="text/javascript" language="JavaScript1.2"> if (document.all){ document.write('<span id="main2" style="position:relative;width:'+scrollerwidth+';height:'+scrollerheight) document.writeln(';overflow:hiden;background-color:'+scrollerbgcolor+'">') document.write('<div style="position:absolute;width:'+scrollerwidth) document.writeln(';height:'+scrollerheight+';clip:rect(0 '+scrollerwidth+' '+scrollerheight+' 0);left:0;top:0">') document.writeln('<div id="first2" style="position:absolute;width:'+scrollerwidth+';left:0;top:1;">') document.write(messages[0]) document.writeln('<\/div>') document.writeln('<div id="second2" style="position:absolute;width:'+scrollerwidth+';left:0;top:0">') document.write(messages[1]) document.writeln('<\/div>') document.writeln('<\/div>') document.writeln('<\/span>') } </script>
Le type d'erreurs est :
*document type does not allow element "p" here

Code : Tout sélectionner

<p class="texte" style="text-align: left;FONT-SIZE: 10pt; font-weight: bold;"[color=red]>[/color]
*literal is missing closing delimiter

Code : Tout sélectionner

bold;"><a href[color=red]=[/color]"complete.php" onclick="\javascript:window.open(this.href,'pop

Merci.

Mammouth du PHP | 19672 Messages

28 sept. 2005, 17:06

Est-ce que tu arrives seulement à te relire et à suivre ton code ??? :shock:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

28 sept. 2005, 17:39

Vous avez tout faux. Je prends un exemple de votre code :
Dès les premières lignes et vu qu'il s'agit de code javascript vous commettez l'erreur dans la chaine affectée au tableau messages.
En loccurence :
<script type="text/javascript" 
                                                    language="JavaScript1.2"> 
                                                    
//configurer les 3 variables suivantes pour la hauteur, la largeur et le fond de la zone defilante. 
var scrollerwidth=220 
var scrollerheight=60 
var scrollerbgcolor='white' 
//configurer les variables suivantes pour le contenu de vos messages. 
var messages=new Array() 
messages[0]="<p class="texte" style ...
Le reste est faux bien sure.
Explication et correction:
on ne doit pas utiliser le " à l'interieur d'une chaine programmée si ce même caractère est utilisé pour délimiter la chaine.
Autrement dit, on ne peut écrire :
var chaine = "blabla "blabla" blabla"; car les " à l'interrieur rentrent en conflit avec celles qui délimitent le texte (celles en vert)

il faut écrire : var chaine = "blabla \"blabla\" blabla";
On dit dans ce cas que les " interne à la chaine sont échappés par \

Si vous faite le tour de votre code vous allez trouver un tas de " mal échapés
J'ai même remarqué une absence de " là où il faut les mettre et notament sur le code qui a déclenché les erreurs que vous avez soulevez.

Votre code est indigeste, essayez de le simplifier pour pouvoir le maitriser, l'adapter et le corriger quand il y a erreur.

Voici tout de même une portion de votre code corrigée :

Code : Tout sélectionner

<script type="text/javascript" language="JavaScript1.2"> //configurer les 3 variables suivantes pour la hauteur, la largeur et le fond de la zone defilante. var scrollerwidth=220; var scrollerheight=60; var scrollerbgcolor='white'; //configurer les variables suivantes pour le contenu de vos messages. var messages = new Array(); //Le 1° message messages[0] = " <p class=\"texte\" style=\"text-align: left; FONT-SIZE: 10pt; font-weight: bold\" > <a href=\"oral.php\" onclick=\"javascript:window.open(this.href, 'popup', 'resizable=0, height=690, width=550'); return false;\" class=\"texte\" style=\"FONT-SIZE: 10pt; font-weight: bold;text-align: left\" > ....

Ainsi de suite ... sauf pour le cas particulier des évenements javascript de type "OnClick" : là il faut utiliser des ' parceque " et \" sont déjà utilisés.
Comme dans : onClick = \"javascript:window.open(this.href, 'popup', 'resizable=0, height=690, width=550'); return false; \"
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Mammouth du PHP | 19672 Messages

28 sept. 2005, 17:57

Je viend de passer une petite demi-heure à remettre ça à peu près droit et à supprimer quelques messages d'erreur: j'obtiens enfin un affichage, pas très beau, mais ça affiche :
<script type="text/javascript" language="JavaScript1.2">
//configurer les 3 variables suivantes pour la hauteur, la largeur et le fond de la zone defilante.
var scrollerwidth=220;
var scrollerheight=60;
var scrollerbgcolor='white';
//configurer les variables suivantes pour le contenu de vos messages.
var messages=new Array();
messages[0]="<p class=\"texte\" style=\"text-align: left;\"><a href=\"oral.php\" onclick=\"javascript:window.open(this.href,'popup','resizable=0,height=690,width=550');return false;\" class=\"texte\" style=\"color: #c00; font-size: 10pt; font-weight: bold;\">Préparation intensive à l'oral</a></p>\n"+
"<p class=\"texte\" style=\"text-align: left;\"><a href=\"complete.php\" onclick=\"javascript:window.open(this.href,'popup','resizable=0,height=690,width=550');return false;\" class=\"texte\" style=\"color: #c00; font-size: 10pt; font-weight: bold;\">Concours de septembre (écrit+oral)</a></p>";
messages[1]="<p class=\"texte\" style=\"text-align: left;\"><a href=\"oral.php\" onclick=\"javascript:window.open(this.href,'popup','resizable=0,height=690,width=550');return false;\" class=\"texte\" style=\"color: #c00; font-size: 10pt; font-weight: bold;\">Préparation intensive à l'oral</a></p>\n"+
"<p class=\"texte\" style=\"text-align: left;\"><a href=\"complete.php\" onclick=\"javascript:window.open(this.href,'popup','resizable=0,height=690,width=550');return false;\" class=\"texte\" style=\"color: #c00; font-size: 10pt; font-weight: bold;\">Concours de septembre (écrit+oral)</a></p>";
messages[2]="<p class=\"texte\" style=\"text-align: left;\"><a href=\"oral.php\" onclick=\"javascript:window.open(this.href,'popup','resizable=0,height=690,width=550');return false;\" class=\"texte\" style=\"color: #c00; font-size: 10pt; font-weight: bold;\">Préparation intensive à l'oral</a></p>\n"+
"<p class=\"texte\" style=\"text-align: left;\"><a href=\"complete.php\" onclick=\"javascript:window.open(this.href,'popup','resizable=0,height=690,width=550');return false;\" class=\"texte\" style=\"color: #c00; font-size: 10pt; font-weight: bold;\">Concours de septembre (écrit+oral)</a></p>";
messages[3]="<p class=\"texte\" style=\"text-align: left;\"><a href=\"oral.php\" onclick=\"javascript:window.open(this.href,'popup','resizable=0,height=690,width=550');return false;\" class=\"texte\" style=\"color: #c00; font-size: 10pt; font-weight: bold;\">Préparation intensive à l'oral</a></p>\n"+
"<p class=\"texte\" style=\"text-align: left;\"><a href=\"complete.php\" onclick=\"javascript:window.open(this.href,'popup','resizable=0,height=690,width=550');return false;\" class=\"texte\" style=\"color: #c00; font-size: 10pt; font-weight: bold;\">Concours de septembre (écrit+oral)</a></p>";
///////Do not edit pass this line///////////////////////
var i = (messages.length > 1) ? 2 : 0;
function move1(whichlayer)
{
    tlayer = eval(whichlayer);
    if (tlayer.top > 0 && tlayer.top == tlayer.document.height*-1)
    {
        tlayer.top-=5;
        setTimeout("move1(tlayer)",100);
    }
    else
    {
        tlayer.top=scrollerheight;
        tlayer.document.write(messages[i]);
        tlayer.document.close();
        i = (i==messages.length-1) ? 0 : i+1;
    }
}
function move2(whichlayer)
{
    tlayer2=eval(whichlayer);
    if(tlayer2.top > 0 && tlayer2.top <= 5)
    {
        tlayer2.top=0;
        setTimeout("move2(tlayer2)",5000);
        setTimeout("move1(document.main.document.first)",5000);
        return;
    }
    if(tlayer2.top >= tlayer2.document.height*-1)
    {
        tlayer2.top-=5;
        setTimeout("move2(tlayer2)",100);
    }
    else
    {
        tlayer2.top=scrollerheight;
        tlayer2.document.write(messages[i]);
        tlayer2.document.close();
        i = (i==messages.length-1) ? 0 : i+1;
    }
}

function move3(whichdiv)
{
    tdiv=eval(whichdiv);
    if(tdiv.style.pixelTop > 0 && tdiv.style.pixelTop <= 5)
    {
        tdiv.style.pixelTop=0;
        setTimeout("move3(tdiv)",5000);
        setTimeout("move4(second2)",5000);
        return;
    }
    if(tdiv.style.pixelTop >= tdiv.offsetHeight*-1)
    {
        tdiv.style.pixelTop-=5;
        setTimeout("move3(tdiv)",100);
    }
    else
    {
        tdiv.style.pixelTop=scrollerheight;
        tdiv.innerHTML=messages[i];
        i = (i==messages.length-1) ? 0 : i+1;
    }
}

function move4(whichdiv)
{
    tdiv2=eval(whichdiv);
    if(tdiv2.style.pixelTop > 0 && tdiv2.style.pixelTop <= 5)
    {
        tdiv2.style.pixelTop=0;
        setTimeout("move4(tdiv2)",5000);
        setTimeout("move3(first2)",5000);
        return;
    }
    if(tdiv2.style.pixelTop >= tdiv2.offsetHeight*-1)
    {
        tdiv2.style.pixelTop-=5;
        setTimeout("move4(second2)",100);
    }
    else
    {
        tdiv2.style.pixelTop=scrollerheight;
        tdiv2.innerHTML=messages[i];
        i = (i==messages.length-1) ? 0 : i+1;
    }
}
function startscroll()
{
    if(document.all)
    {
        move3(first2);
        second2.style.top=scrollerheight;
    }
    else if (document.layers)
    {
        move1(document.main.document.first);
        document.main.document.second.top=scrollerheight+5;
        document.main.document.second.visibility='show';
    }
}
window.onload=startscroll;
</script>
<ilayer id="main" width="&{scrollerwidth};" height="&{scrollerheight};" bgcolor="&{scrollerbgcolor};"></ilayer>
<layer id="first" left="0" top="1" width="&{scrollerwidth};">
<ilayer id="main" width="&{scrollerwidth};" height="&{scrollerheight};" bgcolor="&{scrollerbgcolor};">
<script type="text/javascript" language="JavaScript1.2">
if (document.layers)
{
    document.write(messages[0]);
}
</script>
</ilayer>
</layer>
<layer id="second" left="0" top="0" width="&{scrollerwidth};" visibility="hide">
<script type="text/javascript" language="JavaScript1.2">
if (document.layers)
{
    document.write(messages[1]);
}
</script>
</layer>
<script type="text/javascript" language="JavaScript1.2">
if (document.all)
{
    document.write('<span id="main2" style="position:relative;width:'+scrollerwidth+';height:'+scrollerheight);
    document.writeln(';overflow:hiden;background-color:'+scrollerbgcolor+'">');
    document.write('<div style="position:absolute;width:'+scrollerwidth);
    document.writeln(';height:'+scrollerheight+';clip:rect(0 '+scrollerwidth+' '+scrollerheight+' 0);left:0;top:0">');
    document.writeln('<div id="first2" style="position:absolute;width:'+scrollerwidth+';left:0;top:1;">');
    document.write(messages[0]);
    document.writeln('<\/div>');
    document.writeln('<div id="second2" style="position:absolute;width:'+scrollerwidth+';left:0;top:0">');
    document.write(messages[1]);
    document.writeln('<\/div>');
    document.writeln('<\/div>');
    document.writeln('<\/span>');
}
</script>
Et au moins on arrive à suivre un peu plus facilement quand le code n'est pas éparpillé aux quatre vents...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Petit nouveau ! | 2 Messages

28 sept. 2005, 22:11

Il me reste encore pas mal d'erreurs comme :
*an attribute value must be a literal unless it contains only name characters.

messages[0]="<p class=\"texte\" style=\"text-align: left;\"><a href=\"oral.php\"

*the name and VI delimiter can be omitted from an attribute specification only if SHORTTAG YES is specified.

...ss=\"texte\" style=\"text-align: left;\"><a href=\"oral.php\" onclick=\"javas