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 ?