2012-01-19 7 views
2

元の変数の名前を作成する2つの変数を組み合わせて、新しい変数を既定の変数と同じ値に設定しようとしています。これは混乱に聞こえるかもしれので、ここでの例です:2つの変数を組み合わせて、既に宣言されている変数に新しい変数を設定します。

// 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が文書に書き込まれるようにしたいと思う...これを行う方法はありますか?私はこれがおそらくこれを行うことについて考え始めるための正しい方法ではないことを知っています。私はそれを私がやろうとしていたものの同義語として使っていました。

ありがとうございました。

+0

なぜあなたはこれをやりたいのですか? – mrtsherman

+0

あなたが本当に解決しようとしている問題を教えてください。私たちはあなたがしたいことよりもはるかに優れた解決策を提供することができます。 – jfriend00

+0

これは間違っています。あなたがしようとしていることを教えてもらうために正しい方法を知らせることができますか? – Archer

答えて

4

これらはグローバル変数、あなたはこのようにそれを行うことができますしている場合:

var position = 4; 
var a = "posi"; 
var b = "tion"; 

document.write(window[a+b]); 

これは、すべてのグローバル変数は、実際にwindowオブジェクトのプロパティであり、あなたはどちらかwindow.positionとしてウィンドウオブジェクトのプロパティを参照することができるという理由だけで動作しますまたはwindow["position"]。後者が機能するので、上記の例のように文字列操作を使用して文字列"position"を作成することもできます。

私はなぜこれをやっているのですか?

var positions = [1,4,67,99]; 

document.write(positions[3]); 
:人々はこれを行うには頼む一般的な理由の1つはそう、彼らはそのような場合は、より良い答えはインデックスによってアクセスすることができ、アレイを使用することです.... position1position2、などのような変数にアクセスすることができています

あなたもこのように変数を経由して、配列の値にアクセスすることができます

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

あなたが解決しようとしている、我々はそれを解決するための最良の方法をお勧めすることができます。あなたが現在尋ねていることは、間違ったアプローチのように聞こえます。

+0

配列メソッドを使用すると、変数を使用して値を格納し、値を配列に格納できますか? – simonthumper

+0

@imonthumper - はい、変数によって配列位置にアクセスできます。私はそれを私の答えに加えました。 – jfriend00

+0

これはうまくいきました!ありがとうございました! 2番目のボックスが最初のボックスの位置に戻ったように、いくつかのバグを修正するだけで済みます。 – simonthumper

4

私はあなたがこれをやっている理由を知りませんが、それは可能ですevalメソッドを使用して可能です。

あなたの変数を組み合わせながらのparseInt(POS)+のparseInt(ition)は が文字列変数posとitionを宣言することを忘れていけない... :)この

var position = 5; 
var pos = "posi"; 
var tion = "tion"; 
var finalVar = pos+tion; 

document.write (eval(finalVar)); 

DEMO

+1

'eval()'は最後の可能な手段であるべきです。 "eval()"を使用するよりも、目標を達成するための方がはるかに良い方法が99.999%です。もちろん、営業担当者は、私たちが推奨するより良い方法を知るために実際に何をしようとしているのかを記述する必要があります。 – jfriend00

+0

@ jfriend00 - 私はあなたに同意し、はい、それはOPのシナリオに依存します。 – ShankarSangoli

+0

私は左側にボックスがあるウェブレイアウトシステムを作成しようとしていますが、クリックすると記事を表示するように拡張されています...開かれた記事を閉じると閉じますそれがボックスになり、新しいものが開きます。今私はすべての単一のボックスのコード行を書くことでこれを行うことができますが、私はこれよりも簡単にしたいので、私がしようとしているのは展開されているボックスのIDを取得することです。それを元に戻すには、フレーズleft_またはtop_の末尾にこの値を接続します。 – simonthumper

0

使用これを試してみてください

1
var position = 'top'; 
var pos = "posi"; 
var tion = "tion"; 
var finalVar = pos+tion; 

alert(window[finalVar]); // better that `eval()` 
document.write(window[finalVar]); 
関連する問題