javaScript : passer un id en paramatre ? - Programmation
Marsh Posté le 27-04-2001 à 17:01:06
c'est pas plutot pixelLeft pour IE ? 
 
et si 'id' est le parametre de ta fonction deplace : 
document.all[id].style.pixelLeft = ...... 
document[id].left = .......
Marsh Posté le 27-04-2001 à 17:08:21
non non ça marche c sur, je l'ai fait pour un. 
mais par contre, comment tu fais l'appel ? 
moi j'ai essayer: 
- deplace('iddutruc',600,0,20) là y me sort une erreur objet 
  inatendu pour IE, et sous netscape le texte apparait tres  
  brievement avec de disparaitre 
-  ou deplace("id",600,0,20), et là y se passe rien ?
Marsh Posté le 27-04-2001 à 17:12:47
faudrait que je vois le source complet. 
 
sous NS : tape 'javascript:'  dans la zone de saisie des urls. 
c'est le debugger , on en saura un peu plus. 
 
attention toutefois si le script se lance avant le chargement complet de la page.
Marsh Posté le 27-04-2001 à 17:14:12
et une fonction suffirait ! 
 
deplace(......) 
  { 
   if (ie) faire çi 
   else    faire ça 
  }
Marsh Posté le 27-04-2001 à 17:21:31
<SCRIPT LANGUAGE="JavaScript"> 
<!-- Start script  
 
function oldNetscape()  
{    
    verStr=navigator.appVersion;  
    version = parseFloat(verStr); 
    if (navigator.appName == 'Netscape') 
 { 
     if (version <= 4.7) 
 	{ 
            return true; 
 	} 
 	else 
      {return false;}  
 } 
    else 
        return false; 
} 
 
function deplace(from, to, moveto)  
{ 
    if (from > to) 
 { 
     document.all.texte.style.left = (from -= moveto); 
        setTimeout('deplace(' + from + ',' + to + ',' + moveto + ')', 75); 
 } 
} 
function deplaceN(from, to, moveto)  
{ 
    if (from > to) 
 { 
     document.texte.left = (from -= moveto); 
        setTimeout('deplaceN(' + from + ',' + to + ',' + moveto + ')', 75); 
 } 
} 
 
// End script --> 
</SCRIPT> 
</head> 
<BODY onLoad="oldNetscape()?deplaceN(600,0,20):deplace(600,0,20)"> 
<DIV ID="texte" STYLE="text-align:center;font-size:40pt;font-family:Arial;color:#7AADFF;position:relative">The Team</DIV> 
 
voila 
alors tu ferais comment pour passer l'id en param ?
Marsh Posté le 27-04-2001 à 17:26:44
position:absolute
Marsh Posté le 27-04-2001 à 17:28:10
et ne met pas un settimeout dans ta fonction deplace. 
 
met un setInterval avec les memes parametres en dehors d'une fonction. 
 
attention : elle se declenchera tout de suite
Marsh Posté le 27-04-2001 à 17:29:03
et reduit ca en UNE fonction. 
 
et l'appel dans onload est franchement suspect 
Marsh Posté le 27-04-2001 à 17:33:05
oua oua oua oua calme ! 
pourquoi absolute ? 
oui je v reduire en une fonction 
pourquoi dans onLoad c suspect ? moi je veux juste que mon titre defile qd on a chargé la page, apres il bouge plus. alors je vois pas pourquoi c pas bien dans le onLoad. 
au fait j'y arrive maintenant avec l'id : 
function deplace(id,from, to, moveto)  
{ 
    id2 = id; 
    if (from > to) 
 { 
     document.all.texte.style.left = (from -= moveto); 
        setTimeout('deplace(id2,' + from + ',' + to + ',' + moveto + ')', 75); 
 } 
} 
function deplaceN(id,from, to, moveto)  
{ 
    id2 = id; 
    if (from > to) 
 { 
     document.texte.left = (from -= moveto); 
        setTimeout('deplaceN(id2,' + from + ',' + to + ',' + moveto + ')', 75); 
 } 
} 
 
// End script --> 
</SCRIPT> 
</head> 
<BODY onLoad="oldNetscape()?deplaceN('texte',600,0,20):deplace('texte',600,0,20)"> 
<DIV ID="texte" STYLE="text-align:center;font-size:40pt;font-family:Arial;color:#7AADFF;position:relative">The Team</DIV>
Marsh Posté le 27-04-2001 à 17:36:09
tu y arrives avec id2 ?  
 
 
et ca fonctionne ?  
  
 
 
ton id et id2 ne te servent à RIEN  
 
tu passes id en parametre que tu affectes ensuite a id2 qui est le parametre du settimeout qui va l'affecter dans la nouvelle recursive. 
 
ca ne change rien.
Marsh Posté le 27-04-2001 à 17:37:15
le parametre 'to' ne sert egalement a rien. 
 
il n'est utilisé nulle part !!!!!
Marsh Posté le 27-04-2001 à 17:40:13
pardon pour le 'to' ...c'est une valeur butoir 
autant pour moi
Marsh Posté le 27-04-2001 à 17:40:22
attends j'avais un mauvais truc dans mon presse papier : 
 
function deplace(id,from, to, moveto)  
{ 
    id2 = id; 
    if (from > to) 
 { 
     document.all[id].style.left = (from -= moveto); 
        setTimeout('deplace(id2,' + from + ',' + to + ',' + moveto + ')', 75); 
 } 
} 
function deplaceN(id,from, to, moveto)  
{ 
    id2 = id; 
    if (from > to) 
 { 
     document[id].left = (from -= moveto); 
        setTimeout('deplaceN(id2,' + from + ',' + to + ',' + moveto + ')', 75); 
 } 
} 
voila 
et le paramaetre to permet de definir la position d'arrivee ET IL SERT !
Marsh Posté le 27-04-2001 à 17:42:40
et id2 me sert : 
si je fais directement l'appel recursif en mettant id, une erreur de script est généré : id parametre inconnu 
je n'ai trouvé que cette solution pour la contourner
Marsh Posté le 27-04-2001 à 17:48:30
Maintenant , ils te servent  
 
bon vla un ot'truc et ca marche: seul probleme : ca va trop vite 
 
<html> 
<head> 
 
<script language='javascript'> 
 
function deplace( id, from ) 
   { 
    var x=from; 
    while ( x > 0 ) 
      { 
       if (navigator.appName == "Netscape" ) 
          document[id].left = x; 
       else 
          document.all[id].style.pixelLeft = x; 
 
       x--; 
      } 
 
   } 
 
</script> 
</head> 
 
<body onload="deplace('texte',600);"> 
 
<div id='texte' style='position:absolute;left:600;top:50'> 
et voici mon texte 
</div> 
 
 
</body> 
</html>
[edit]--Message édité par nicotine--[/edit]
Marsh Posté le 27-04-2001 à 17:50:05
et voila :  
<html> 
<head> 
 
<script language='javascript'> 
 
function deplace( id, from ) 
   { 
    var x=from; 
    while ( x > 0 ) 
      { 
       if (navigator.appName == "Netscape" ) 
          document[id].left = x; 
       else 
          document.all[id].style.pixelLeft = x; 
 
       x--; 
 
       setTimeout("kedal()",500); 
      } 
 
   } 
 
function kedal() 
   { return true; } 
 
</script> 
</head> 
 
<body onload="deplace('texte',600);"> 
 
<div id='texte' style='position:absolute;left:600;top:50'> 
et voici mon texte 
</div> 
 
 
</body> 
</html>
Marsh Posté le 27-04-2001 à 17:51:01
et ca va trop vite pour IE
Marsh Posté le 27-04-2001 à 17:59:39
voila ma soltion 
... 
<style> 
div.titre{ position:relative; text-align:left; text-decoration: none; color: #7AADFF; font-family: Arial,helvetica,sans-serif; font-size: 60px; font-weight: bold;} 
</style> 
... 
 
function deplace(id,from, to, moveto)  
{ 
    id2 = id; 
    if (from > to) 
 { 
     if (navigator.appName == "Netscape" ) 
 	{ 
      document[id].left = (from -= moveto); 
   setTimeout('deplace(id2,' + from + ',' + to + ',' + moveto + ')', 75); 
 	} 
 	else 
 	{ 
     document.all[id].style.left = (from -= moveto); 
        setTimeout('deplace(id2,' + from + ',' + to + ',' + moveto + ')', 75); 
 	} 
 } 
} 
 
 
// fin du script --> 
</script> 
</head> 
<body onLoad="deplace('team',800,0,20)"> 
<div id="team" class="titre">The Team</div> 
 
 
bizarrement ça marche pas sous netscape 6 ?
Marsh Posté le 27-04-2001 à 18:07:08
si ca marche tant mieux mais c'est vraiment pas limpide
Marsh Posté le 27-04-2001 à 16:57:19
voila j'ai reussi a faire un script qui fait defiler du texte... bref ça on s'en fout.
ce que je voudrai, c pouvoir passer en param l'id de ma <div>, comme ça je pourrai faire ce script generiquement.
ainsi on a :
pour IE :
function deplace(id,from, to, moveto)
{
document.all.id.style.left = (from -= moveto);
....
}
pour netscape :
function deplaceN(id,from, to, moveto)
{
document.id.left = (from -= moveto);
....
}
mais ça, ça marche pas. Comment faire ?