11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je crée en ce moment un drag 'n drop (du style google: accueil personnalisé) et firefox m'indique une erreur avec ce code :

function block(height, width, left, top, id)
{
	// variables
	this.height = height;
	this.width = width;
	this.left = left;
	this.top = top;
	this.element = document.getElementById(id);
	
	//méthodes
	this.setCoord = setCoord;
	this.display = display;
	this.moveTo = moveTo;
}

function setCoord(left, top)
{
	this.left = left;
	this.top = top;
	
	[#red]this.element.style.left = this.left + "px";[/#]
	this.element.style.top = this.top + "px";
}

function display()
{
	this.setCoord(this.left, this.top);
}

l'erreur est la suivante :
a écrit :

Erreur : this.element has no properties
Ligne : 21

(La ligne 21 est celle en rouge)

quelqu'un pourrait-il m'indiquer mon erreur.
merci d'avance Smiley cligne
Modifié par the_penguin (10 Jan 2006 - 18:41)
bonjour,

qui appelle Display ? bref il me manque le début du code pour bien comprendre ce qu'il se passe Smiley smile

sinon petite suggestion, je prefererais ecrire




function block(height, width, left, top, id)
{
	// variables
	this.height = height;
	this.width = width;
	this.left = left;
	this.top = top;
	this.element = document.getElementById(id);

}

block.prototype.setCoord = function(left, top)
{
	this.left = left;
	this.top = top;
	
	this.element.style.left = this.left + "px";
	this.element.style.top = this.top + "px";
}

block.prototype.display = function()
{
	this.setCoord(this.left, this.top);
}




Etant donné que t'es méthode son propres à l'instance de ton objet blog, tu peux directement les rajouter au prototype de la fonction, tu peux aussi faire de la sorte

 

function toto()
{
     this.tata = function(){alert('tata call');}
}




La grande différence est qu'avec ta facon, tu rajoutes ta méthode d'abord dans window puis dans block, si plus tard t'as une autre fonction setCoord tu risques de redéfinir la fonction de l'objet block et donc t'es mal Smiley smile

Il existe des milliers de facons d'ecrire des classes, la meilleure facon est celle que tu trouve la plus pratique Smiley smile

perso je rejoins la méthode de la librairie prototype http://prototype.conio.net mixé avec celle d'atlas http://atlas.asp.net