将变量值指定为变量名称

Assign variable value as variable name

本文关键字:变量名 变量值      更新时间:2023-09-26

问题是我想通过使用其他变量的值调用变量来缩短我的代码

长工作版本:

var russia = new Array('15')
var switzerland = new Array('5')
$('.country').mouseover(function(){
    switch(this.id){
        case 'russia':
            active_country_lift(this.id,russia[0])
        break
        case 'switzerland':
            active_country_lift(this.id,switzerland[0])
        break           
    }
})

它将获得鼠标悬停的ID,然后使用开关检查它是否匹配其中一个变量

我想得到的是这样的东西:

var russia = new Array('15')
var switzerland = new Array('5')
$('.country').mouseover(function(){
    active_country_lift(this.id,this.id[0])     
})

当然上面的代码不起作用,但是有解决方法吗?

更新:Arun的答案有效,很快就

接受了它,至于要求完整代码的评论,这是我应用Arun的答案后的一大块

var countries = {
    russia: ['-15px'],
    switzerland: ['-5px']
}
$('.country_inactive').mouseover(function(){
    active_country_lift(this.id, countries[this.id][0])
})
function active_country_lift(country, country_top){
    if(!$('#'+country+'_active').hasClass('active')){
        $('#'+country+'_active').stop().fadeIn(100).animate({
            'top' : country_top
        }, 200)
        $('#'+country).stop().fadeOut(100)
    }
}

它将用于世界地图,请随时提出任何建议以使其更具活力

您可以将国家/地区信息存储在对象(如键值对)中,然后使用括号表示法动态访问它

var countries = {
  russia: new Array('-15px'),
  switzerland: new Array('-5px')
}
$('.country').mouseover(function() {
  active_country_lift(this.id, countries[this.id][0])
})

如果您没有多个值,则

var countries = {
  russia: '-15px',
  switzerland: '-5px'
}
$('.country').mouseover(function() {
  active_country_lift(this.id, countries[this.id])
})

尝试使用eval()函数

var russia = new Array('-15px')
var switzerland = new Array('-5px')
$('.country').mouseover(function(){
   active_country_lift(this.id,eval(this.id)[0])     
})