Newsgroup: it.comp.lang.javascript
Titolo: eventi e metodi di oggetti.

Salve, 
dopo aver definito un oggetto,
è possibile agganciare un suo metodo ad un evento, per es. il click su 
un bottone.
Ho provato e va anche nel metodo corrispondente ma è come se non 
vedesse le altre proprietà dell'oggetto.
Sbaglio qualcosa, o forse non si può fare.
Grazie per l'aiuto

 vedesse le altre proprietà dell'oggetto.
credo che ti manchi davanti alle proprietà del metodo "this", ma se ci 
posti il codice è più facile
FF

 ha scritto:

all'interno della definizione dell'oggetto faccio
this.setta=function(){
addEvent(document.getElementById('bottone'), 'click', this.setToInsert);
};
dove
setToInsert è un metodo dell'oggetto.
e addEvent è la classica funzione per aggiungere l'evento.
L'evento scatta entro nel metodo ma le proprietà settate per l'oggetto 
non vengono riconosciute.
ho provato che devo usare un'istruzione del genere:
addEvent(document.getElementById(idInsert), 'click', function()
{obj.setToInsert();});
dove obj deve rappresentare l'oggetto a cui sono interessato.

 
Io ho fatto una cosa simile, ti posto il codice di una classe bottone 
immagine (non badare ai nomi e a tutto il resto, fa parte di una 
libreria LGPL in fase beta, la rilascerò entro la prossima settimana 
spero). Funziona sia su IE che su FF
function BiiOImgButton(id)
{
	// set dafault value
 
this.id
 = id;
	this.img = null;
	this.imgOver = null;
	this.imgPress = null;
	this.element = null;
	this.isEnabled = true;
	this.create = BiiOImgButton_create;
	this.func = function() {  };
 
	// set methods
	this.setFunction = BiiOImgButton_setFunction;
	this.setLinkTo = BiiOImgButton_setLinkTo;
	this.setEnabled = BiiOImgButton_setEnabled;
}
function BiiOImgButton_create()
{
	// create button
	document.write('<img id="'+
this.id
+'" src="'+this.img+'">');
	// register event
	this.element = document.getElementById(
this.id
);
	var obj = this;
	if (this.element.addEventListener) // W3C event model
	{
		this.element.addEventListener("mouseover", function() 
{BiiOImgButton_over(obj);}, false);
		this.element.addEventListener("mouseout", function() 
{BiiOImgButton_out(obj);}, false);
		this.element.addEventListener("mousedown", function() 
{BiiOImgButton_down(obj);}, false);
		this.element.addEventListener("mouseup", function() 
{BiiOImgButton_up(obj);}, false);
	}
	else if (this.element.attachEvent) // IE event model
	{
		this.element.attachEvent("onmouseover", function() 
{BiiOImgButton_over(obj);});
		this.element.attachEvent("onmouseout", function() 
{BiiOImgButton_out(obj);});
		this.element.attachEvent("onmousedown", function() 
{BiiOImgButton_down(obj);});
		this.element.attachEvent("onmouseup", function() 
{BiiOImgButton_up(obj);});
	}
}
function BiiOImgButton_setFunction(func)
{
	this.func = func;
}
function BiiOImgButton_setLinkTo(linkTo)
{
	this.setFunction(function() {document.location.href = linkTo;} );
}
function BiiOImgButton_over(obj)
{
	if (obj.isEnabled)
		obj.element.src = obj.imgOver;
}
function BiiOImgButton_out(obj)
{
	if (obj.isEnabled)
		obj.element.src = obj.img;
}
function BiiOImgButton_down(obj)
{
	if (obj.isEnabled)
		obj.element.src = obj.imgPress;
}
function BiiOImgButton_up(obj)
{
	if (obj.isEnabled)
	{
		obj.element.src = obj.imgOver;
		obj.func();
	}
}
function BiiOImgButton_setEnabled(isEnabled)
{
	this.element.src = this.img;
	if (isEnabled)
	{
		this.element.style.opacity = "1.0";
		this.element.filter.alpha.opacity = 100;
	}
	else
	{
		this.element.style.opacity = "0.5";
		this.element.filter.alpha.opacity = 50;
	}
	this.isEnabled = isEnabled;
}