我正试图将一个新变量设置为与已声明变量相同的值,方法是将两个变量组合在一起,形成原始变量的名称。。。这听起来可能令人困惑,所以这里有一个例子:
// 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.position
或window["position"]
。由于后者有效,您也可以使用字符串操作来构造字符串"position"
,如上例所示。
我会问你为什么这么做?人们要求这样做的一个常见原因是,他们可以访问position1
、position2
等变量……如果是这样,那么更好的答案是使用一个可以通过索引访问的数组:
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…:)