将变量值指定为变量名称

时间:2016-04-22 03:33:11

标签: javascript jquery html arrays dynamic

问题是我想通过使用其他变量的值

调用变量来缩短我的代码

长期工作版:

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           
    }
})

它将获得mouseovered的id,然后使用switch

检查它是否与变量之一匹配

我想要获得的是这样的:

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)
    }
}

它将用于世界地图,随时提出任何使其更具动态的建议

2 个答案:

答案 0 :(得分:4)

您可以将国家/地区信息存储在关键值对等对象中,然后使用bracket notation动态访问它

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])
})

答案 1 :(得分:0)

尝试使用eval()函数

var russia = new Array('-15px')
var switzerland = new Array('-5px')

$('.country').mouseover(function(){
   active_country_lift(this.id,eval(this.id)[0])     
})