0

変数の値をプロンプト ボックスに入力して、元の変数のアラートで返されるようにすることは可能かどうか疑問に思っています。

説明:プロンプトにvar myGoal = "answer";「 」と入力した場合、「 」の値を取得して検索し、アラートで返すにはanswerどのような方法がよいでしょうか?answermyGoal

4

4 に答える 4

2

このような何かがトリックを行います:

function test(val)
{
    for (var i in window)
    {
        if (window.hasOwnProperty(i) && window[i] === val)
        {
            alert(i);
        }
    }
}

これは基本的にグローバルオブジェクト(ウィンドウ)内のすべてを繰り返し、探している値に等しいものが見つかるとアラートを発します。

于 2009-10-08T03:42:28.163 に答える
1

アプローチを少し変更したい場合:

var Data = new Object();
Data["myGoal"] = "answer";
// ...

// Get response from prompt...
var response = /* ... */;

for (var key in Data)
{
    if (Data[key] == response)
    {
        alert(key);
    }
}
于 2009-10-08T04:26:50.417 に答える
0
function test() 
{
    var answer = prompt("Hello? What is your name?",'');
    alert(answer);
}
于 2009-10-08T03:13:59.097 に答える
0

あなたが望むものを達成する唯一の方法は、 eval 関数を使用することです。Eval は「悪」関数としても知られています。コードに大規模なセキュリティ ホールを導入する可能性があり、非常に非効率的です。評価を使用しないでください。

問題は、変数に代入される値が常に文字列、数値、ブール値、未定義、配列、関数、またはオブジェクト リテラルになることです。ある変数が別の変数に割り当てられると、変数の内容が実際に割り当てられるため、変数名を別の変数に値として割り当てることはできません。

文字列を変数名に変換するのではなく、指定された値に対して明示的にテストするために、記述しようとしているテストを再設計する必要があります。

于 2009-10-08T03:37:04.430 に答える