11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour Smiley smile

Voilà, je fais du JavaScript en séparant le dynamisme et le contenu; donc je fais tout dans le fichier JavaScript Smiley smile

Bref, je détaille. Imaginons que je veuille effectuer une instruction sur tous les <div> de la page. Cela me donne :
window.onload = function()
{
	var div = document.getElementsByTagName('div');
	for(var j=0;j<div.length;i++)
	{
		div[j].onmouseover = mouseOver;
	}
}

La fonction mouseOver() contient toutes les instructions.

Pour agir sur le <div> en question, dans mouseOver(), j'utilise this. Exemple en modifiant le background-color :
function mouseOver()
{
	this.style.backgroundColor = 'red';
}

Cela fonctionne très bien.

Maintenant, j'aurais voulu faire une fonction du même genre en donnant en paramètre l'objet voulu.

Par exemple :
window.onload = function()
{
 mouseOver(document.getElementsByTagName('div')[0]);
}


Et qu'il me change donc la couleur de fond du premier <div> au chargement de la page. Ce qui donne une fonction du genre :
function mouseOver(objet)
{
 objet.style.backgroundColor = 'red';
}


Ceci fonctionne également très bien.

Le problème en lui-même, maintenant, c'est que je voudrais faire une "boucle" :
var boucle = 0;
function mouseOver(objet)
{
	objet.style.backgroundColor = 'rgb('+boucle+', '+boucle+', '+boucle+')';
	if (boucle <= 255)
	{
		setTimeout("mouseOver("+objet+");", 100);
		boucle++;
	}
}


Le problème se passe dans :
setTimeout("mouseOver("+objet+");", 100);

Lorsque je tente de lui passer en paramètre cet objet (qui vient du paramètre de la fonction même [function mouseOver([b]objet)[/i]]), l'erreur ressortie est :
a écrit :
Missing ] after element list
mouseOver([object HTMLDivElement]);

Enfin bref, je n'arrive pas à faire passer l'objet en paramètre de la fonction elle-même.

Voilà, en espèrant avoir été clair...

Merci d'avance ! Smiley smile
Modifié par Nyro Xeo (08 May 2005 - 02:27)
Je comprend pas trop ton problème mais ça, ça doit poser problème en tout cas :

setTimeout("mouseOver("+objet+");", 100);


A remplacer par :

setTimeout("mouseOver(objet);", 100);