重複の可能性:
Javascript 動的変数名
onClick イベントから JavaScript 関数に渡される変数があります。全部で 4 つの変数があります。2 つは方向を示し、2 つは速度の変化を示します。h_
どの方向が選択されたか (水平方向と垂直方向のいずれか)を関数で評価しv_
、必要な速度 (速いまたは遅い) を適用する関数が必要です。
現在、最初に方向を評価し、changeSpeed
選択された方向に応じて異なる関数を呼び出すことで、これを成功させています。
私がやりたいのは、これらの機能を組み合わせることです。この例で$(direction + "speed")
は、 は または のいずれh_speed
かになりますv_speed
。
JavaScript はこれを行うために装備されていますか? (心から、ミゲル)
var h_speed = 10;
var v_speed = 10;
function changeSpeed(speed, direction){
var direction = direction;
switch (speed)
{
case 'slower':
$($direction + "speed") = $($direction + "speed")*2;
break;
case 'faster':
$($direction + "speed") = $($direction + "speed")/2;
break;
}
}
私の作業コードの2つのバージョンは次のとおりです。
バージョン 1
var h_speed = 10;
var v_speed = 10;
function identifyDirection(speed, direction){
switch (direction)
{
case 'vertical':
v_changeSpeed(speed);
break;
case 'horizontal':
h_changeSpeed(speed);
break;
}
}
function h_changeSpeed(speed){
switch (speed)
{
case 'slower':
h_speed = h_speed*2;
break;
case 'faster':
h_speed = h_speed/2;
break;
}
}
function v_changeSpeed(speed){
switch (speed)
{
case 'slower':
v_speed = v_speed*2;
break;
case 'faster':
v_speed = v_speed/2;
break;
}
}
バージョン 2
/**
* the changeSpeed functions' arguments
* are placed directly in the function that
* determines whether horizontal or vertical
* speed is changing.
*
*/
function changeSpeed(speed, direction){
switch (direction)
{
case 'vertical':
switch (speed)
{
case 'slower':
v_speed = v_speed*2;
break;
case 'faster':
v_speed = v_speed/2;
break;
}
break;
case 'horizontal':
switch (speed)
{
case 'slower':
h_speed = h_speed*2;
break;
case 'faster':
h_speed = h_speed/2;
break;
}
break;
}
}