单击“警告”对象属性

时间:2014-02-17 17:44:21

标签: javascript jquery properties alert javascript-objects

我有一个构造函数,然后我使用:

创建对象library_science1
function 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

为什么这不起作用:/ :(

2 个答案:

答案 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);
});