我有一个构造函数,然后我使用:
创建对象library_science1function librarytech(humanity,food,wood,metal,wealth)
{
this.humanity=humanity;
this.food=food;
this.wood=wood;
this.metal=metal;
this.wealth=wealth;
}
var library_science1=new librarytech(0,200,200,0,0);
我将此作为点击功能:
$("[id^='library_']").click(function() {
var idd = this.id;
alert(idd);
});
其中html只是
<span id='library_science1'></span>
上面的代码运行正常,很好地警告'library_science1'......当我使用警报直接拉出其中一个对象属性时,它甚至可以正常工作。
$("[id^='library_']").click(function() {
alert(library_science1.food);
});
但是我有很多library_ [SOMETHING]对象,每个对应一个对应的对象
<span id="library_[SOMETHING]"></span>
行。
我正在尝试拉取对象属性,具体取决于单击哪一个。如:
$("[id^='library_']").click(function() {
alert(this.id.food);
});
或
$("[id^='library_']").click(function() {
var x = this.id;
alert(x.food);
});
最终目的是我最终可以做以下事情:
foodamount -= this.id.food
为什么这不起作用:/ :(
答案 0 :(得分:3)
只是因为你正在访问第一个例子中的对象,而不是像其他人一样访问DOM对象,如果他们的obejtos是全局的,那么你可以访问
alert(window[this.id].food);
或
alert(eval(this.id + ".food"));
答案 1 :(得分:1)
我在这里使用eval()做了一个测试,这有效:
$("[id^='library_']").click(function() {
alert(eval(this.id).food);
});
$("[id^='library_']").click(function() {
var x = eval(this.id);
alert(x.food);
});