组合两个变量,使用javascript将一个新变量设置为已声明的变量



我正试图将一个新变量设置为与已声明变量相同的值,方法是将两个变量组合在一起,形成原始变量的名称。。。这听起来可能令人困惑,所以这里有一个例子:

// JavaScript Document

document.write (finalVar);
$(document).ready(function()
{ 
 var position_1 = $("#box_1").position();
 var left_1 = position_1.left;
 var top_1 = position_1.top;
 var position_2 = $("#box_2").position();
 var left_2 = position_2.left;
 var top_2 = position_2.top;
 var box;
 var boxLength;
 var boxNumber;
 var selected = 0;

 $("#box_1").click
    (function()
        {
            if (selected == 1) // if a box is selected run the following
                {       
                    box = $(".selected").attr("id");
                    boxLength = box.length;
                    boxNumber = box.charAt(boxLength-1); // finds the number of the box
                    alert(+boxNumber);
                if (box == "box_1") // if the selected box is itself     then mimimise the box, remove the selected class from it and set selected to zero
                    {
                        $("#box_1").animate({height:50,opacity:0.8,left:left_1,top:top_1,borderRadius:4,MozborderRadiu  s:4},(60),"swing").animate({width:50},(60),"swing").animate({opacity:0.6},(150),        function()
                        {
                                $(this).removeClass("selected");
                        }); 
                    selected = 0;
                    }
                else
                    {
                        $(".selected").animate({height:50,opacity:0.8,left:left_+boxNumber,top:top_+boxNumber,borderRadius:4,MozborderRadius:4},(60),"swing").animate({width:50},(60),"swing").animate({opacity:0.6},(150),     function()
                        {
                            $(".selected").removeClass("selected");
                            $("#box_1").animate({width:900,left:60,top:0,borderRadius:10,MozborderRadius:10},(60),"swing").animate({height:500},(60),"swing").animate({opacity:1},(150), function()
                                {
                                    $("#box_1").addClass("selected");
                                });
                        }
                );} } // end of function for if a box is selected
            else // if no box is selected run the following
                {
                    $("#box_1").animate({width:900,left:60,top:0,borderRadius:10,MozborderRadius:10},(60),"swing").animate({height:500},(60),"swing").animate({opacity:1},(150), function()
                        {   
                            $("#box_1").addClass("selected");

                        }); 
                    selected = 1;
                }
        });
    $("#box_2").click
    (function()
        {
            if (selected == 1) // if a box is selected run the following
                {       
                    box = $(".selected").attr("id");
                    boxLength = box.length;
                    boxNumber = box.charAt(boxLength-1); // finds the number of the box
                    alert(+boxNumber);
                if (box == "box_2") // if the selected box is itself then mimimise the box, remove the selected class from it and set selected to zero
                    {
                        $("#box_2").animate({height:50,opacity:0.8,left:left_2,top:top_2,borderRadius:4,MozborderRadius:4},(60),"swing").animate({width:50},(60),"swing").animate({opacity:0.6},(150),  function()
                        {
                                $(this).removeClass("selected");
                            selected = 0;   
                        }); 
                    }
                else
                    {
                    $(".selected").animate({height:50,opacity:0.8,left:left_+boxNumber,top:top_+boxNumber,borderRadius:4,MozborderRadius:4},(60),"swing").animate({width:50},(60),"swing").animate({opacity:0.6},(150),     function()
                        {
                            $(".selected").removeClass("selected");
                            $("#box_2").animate({width:900,left:60,top:0,borderRadius:10,MozborderRadius:10},(60),"swing").animate({height:500},(60),"swing").animate({opacity:1},(150), function()
                                {
                                    $("#box_2").addClass("selected");
                                });
                        }
                );} } // end of function for if a box is selected
            else // if no box is selected run the following
                {
                    $("#box_2").animate({width:900,left:60,top:0,borderRadius:10,MozborderRadius:10},(60),"swing").animate({height:500},(60),"swing").animate({opacity:1},(150), function()
                        {   
                            $("#box_2").addClass("selected");
                            selected = 1;
                        }); 
                }
        });
});

然后我想把5写在文件上。。。有办法做到这一点吗?我知道这可能不是开始考虑做这件事的正确方式,我只是把它当作我试图做的事情的同义词

谢谢你的帮助。

如果这些是全局变量,您可以这样做:

var position = 4;
var a = "posi";
var b = "tion";
document.write(window[a+b]);

这只是因为所有全局变量实际上都是window对象的属性,并且您可以将窗口对象的属性引用为window.positionwindow["position"]。由于后者有效,您也可以使用字符串操作来构造字符串"position",如上例所示。

我会问你为什么这么做?人们要求这样做的一个常见原因是,他们可以访问position1position2等变量……如果是这样,那么更好的答案是使用一个可以通过索引访问的数组:

var positions = [1,4,67,99];
document.write(positions[3]);

您可以通过如下变量访问数组值:

var positions = [1,4,67,99];
var pos = 3;
document.write(positions[pos]);

或者,要在整个数组上迭代:

var positions = [1,4,67,99];
for (var i = 0; i < positions.length; i++) {
    document.write(positions[i]);
}

如果你描述了你试图解决的真正问题,我们可以推荐解决它的最佳方法。你目前所问的问题听起来几乎是解决任何问题的错误方法。

我不知道为什么要这样做,但是的,使用eval方法是可能的。

试试这个

var position = 5;
var pos = "posi";
var tion = "tion";
var finalVar = pos+tion;
document.write (eval(finalVar));

DEMO

var position = 'top';
var pos = "posi";
var tion = "tion";
var finalVar = pos+tion;
alert(window[finalVar]); // better that `eval()`
document.write(window[finalVar]);

在组合变量parseInt(pos)+parseInt不要忘记声明字符串变量pos和ition…:)

最新更新