所以,假设我有一个页面功能:
<img src="someImage.jpg" onclick="doSomething(this.id)" id="someVar" alt="blah" />
我有一个班级设置:
function anObject(someProp)
{
this.someProp=someProp;
}
someVar=anObject("prop");
我遇到麻烦的地方是doSomething函数:
function doSomething(theObject)
{
alert(theObject.someProp); //this is treated as "someVar".someProp as far as I can tell instead of someVar.someProp
}
基本上,我希望能够将该引用用作对象引用而不是字符串,是否有一种简单的方法可以在没有eval的情况下执行此操作?
还有一些方法可以确保对手,它被视为字符串而不是对象吗?
编辑:我试图引用与图像ID相同的对象而不是图像本身。
答案 0 :(得分:2)
doSomething(this)
删除.id,它将为您提供实际DOM元素作为对象的引用
答案 1 :(得分:1)
你传递一个字符串(this.id)而不是一个对象到你的函数。 应该是:
<img src="someImage.jpg" onclick="doSomething(this)" id="someVar" alt="blah" />
答案 2 :(得分:1)
我使用了一个集合对象:
// Create an object with a property 'someProp', and return it
// (No messing with 'this')
function createSomeObject(someProp) {
return {
someProp: someProp
};
}
// Keep a collection of variables
var someVars = {};
someVars.someVar = createSomeObject('prop');
someVars.otherVar = createSomeObject('prop2');
所以你可以像这样引用它们:
<img src="someImage.jpg" onclick="doSomething(this)" id="someVar" alt="blah" />
然后你可以得到这样的原始对象:
function doSomething(imageElement) {
var someVar = someVars[imageElement.id];
alert(someVar.someProp); // this will return "prop"
}