Javascript 如何使用变量字符串访问对象?

Javascript 如何使用变量字符串访问对象?,javascript,html,Javascript,Html,我有一件名叫壁画的东西。我已将壁画的名称指定给锚元素的标题。当用户单击元素时,我希望将锚的标题存储在一个名为sprite的变量中。然后我想访问名称与sprite变量字符串对应的对象 这是我的密码: var mural= new Object(); mural.top='0px'; mural.left=-'510px'; var stamps= new Object(); stamps.top='0px'; stamps.left=-'1886px'; var sprite=$(this).

我有一件名叫壁画的东西。我已将壁画的名称指定给锚元素的标题。当用户单击元素时,我希望将锚的标题存储在一个名为sprite的变量中。然后我想访问名称与sprite变量字符串对应的对象

这是我的密码:

var mural= new Object();
mural.top='0px';
mural.left=-'510px';

var stamps= new Object();
stamps.top='0px';
stamps.left=-'1886px';

var sprite=$(this).attr('title');

$(".image-holder").css("background-position",'sprite.top, sprite.left');
它不起作用,因为变量sprite只是对$(this.attr('title')的引用,如何使它引用对象


哦,我知道.css jquery语句可能不起作用,我还不确定两个值的正确方法,它们不需要引用作为第二个参数。但我主要关心的是访问对象的方式。

编辑:我终于知道你的目标了。请参考Felix Kling的答案(在
窗口[$(this).attr(“title”)]
部分),我认为他的答案满足您的需要。:-)


将“sprite.top,sprite.left”替换为“
sprite.top+”,“+sprite.left”

元素的属性不能存储任何变量,只能存储字符串

如果您想动态访问
壁画
对象,只需从上方将精灵替换为壁画即可

因此,我假设您希望在单击元素时立即访问壁画对象的数据

stringify(mural)并保存到元素的title属性

当需要提取时,只需
JSON=JSON.parse($(this.attr(“title”))
并获取对象的时间


除此之外,如果我满足您的实际期望,我建议您将其存储在新变量中,而不是存储在title属性中。

使用括号表示法,例如,如果
邮票和
壁画
是全局对象:

var sprite = window[$(this).attr('title')];
JavaScript不解析字符串进行变量替换,您必须使用字符串连接,正如其他代码所示:

.css("background-position", sprite.top + ' ' + sprite.left);

但根据上下文,可能只使用CSS:

.mural {
     background-position: 0px 510px;
}

.stamps {
     background-position: 0px 1886px;
}
JS


如果不可能,我会将两个精灵都存储在地图中:

// in some higher scope
var sprites = {
    mural: {
        top: '0px',
        left: '510px'
    },
    stamps: {
        top: '0px',
        left: '1886px'
    }
};

// in your event handler
var sprite = sprites[$(this).attr('title')];

但是如果不了解更多的上下文,就很难给出更好的建议。

使用对象文字更容易(我假设
=-
是一个拼写错误):

我假设上面将
sprite
设置为字符串原语,因此它不太可能具有top或left属性,但假设您修复了这一点,并且
sprite
是一个对象(或者您可能打算使用
mural
stamps
),那么:


谢谢你知道有关引用对象的任何信息吗?sprite.top当前返回“未定义”。title元素不用于存储数据:(我知道,但它确实描述了锚点中包含的图片。你还建议我怎么做?我想知道一种更好、更有效的方法。只需在样式表中定义它的css?它的css根据单击的内容而变化,这就是为什么我必须通过JS来改变它。非常感谢。我已经给了他们classes on click在样式表中有一个与之关联的样式。非常感谢!
// in some higher scope
var sprites = {
    mural: {
        top: '0px',
        left: '510px'
    },
    stamps: {
        top: '0px',
        left: '1886px'
    }
};

// in your event handler
var sprite = sprites[$(this).attr('title')];
var mural = {top:'0px', left:'510px'};
var stamps= {top:'0px', left:'1886px'};

var sprite = this.title;
$(".image-holder").css("background-position", sprite.top +
  ' ' + sprite.left);