我创建了一个对象,并且当我有一个对象实例时它工作得很好。这不是实际的对象,但概念是相同的。Javascript:如何从事件处理程序中获取对象的正确实例,当它们是对象的多个实例时
function foo(name){
this.name = name;
}
foo.prototype.CreateElement = function(){
var newElement = document.createElement("a");
that = this;
newElement.onclick = function(){
that.SayName(this);
};
document.getElementsByName("body")[0].appendChild(newElement);
}
foo.prototype.SayName = function(LinkObj){
alert(this.name);
LinkObj.href = "http://google.com";
}
有人告诉我,由this
实例保存到一个变量(在这种情况下that
),我仍然会得到该SayName
方法将正确的对象实例的引用。这将使this
表示从onclick
传入的元素的实例。这一切似乎只适用于一个实例,但是当我创建对象的多个实例时,最终将以onclick
事件中提供的最后一个实例为实例。
我初始化两个物体像这样
var ObjOne = new foo("Ted");
ObjOne.CreateElement();
var ObjTwo = new foo("Steve");
ObjTwo.CreateElement();
当onclick
火的ObjOne
,我得到的对象实例ObjTwo
等this.Name
设置为Steve
。
有没有人知道如何在onclick事件从各种实例触发时获得正确的对象实例?我假设我需要绑定与call
正确的实例,但我不确定如何。
在此先感谢,希望这不是让人困惑。
非常感谢,这样做! getElementsByName错误只是一个错字。 – GMihovics 2012-02-22 05:01:03