0

文字列内の別の変数の名前として変数の値を使用しようとしています。

私は検索して、同様の質問が尋ねられるのを見ました、そして答えは「配列の使い方を学ぶ、ダミー」のようです。しかし、私は質問のややユニークなバージョンを持っていると思います。

私はJavascriptで問題を説明するのに十分ではないので、コードを表示する方がおそらく簡単でしょう。混乱している部分を二重星で囲みました(**):

<script language="JavaScript">
function bake(cookietype,ingredient) {
    **ingredient**=document.recipes.**ingredient**.value;
    document.cookie=**cookietype** + "=" + **ingredient**;
}
</script>

<form name="recipes">
    Name: <input type="text" name="flour" size="20" onBlur="bake('oreo','flour')">
    Email: <input type="text" name="eggs" size="20" onBlur="bake('milano','eggs')">
</form>

したがって、これが理にかなっている場合は、関数'bake'に渡される最初の変数にちなんで名付けられたCookieを設定し、Cookieの内容を対応するフォーム入力要素の値にします。これは可能ですか?そうでなければなりませんよね?私は、かなり単純に見えることをするのに十分な教育を受けていません。

4

3 に答える 3

3

変数を作成して、特定のフォーム要素として名前を付ける必要はありません。'flour'2 番目のパラメーターとして渡す代わりに、 this...を渡しますonBlur="bake('oreo',this)"。次に、関数でingredient.value、フォーム入力の値を取得するために使用できます。関数として使用するものは次のとおりです。

function bake(cookietype,ingredient) {
    var textbox_value=ingredient.value;
    document.cookie=cookietype + "=" + textbox_value;
}

そしてHTML:

<form name="recipes">
    Name: <input type="text" name="flour" size="20" onBlur="bake('oreo',this)">
    Email: <input type="text" name="eggs" size="20" onBlur="bake('milano',this)">
</form>

thisこれが呼び出されている HTML 要素を参照します。したがって、関数に渡すときに、という名前のパラメーターで参照できますingredient。テキストを使用してフォーム内の要素の名前を指定するよりもずっときれいに思えます...特に、あなたの例では、テキストは常に呼び出された要素を参照しているためです。

于 2013-01-23T02:52:10.543 に答える
2

角括弧表記を見たいとします。

function bake(cookietype,ingredient) {
    var ingredient=document.recipes[ingredient].value;
    document.cookie= cookietype + "=" + ingredient;
}

おそらく、set cookie 関数を使用する必要があります。MDN ドキュメントをチェックしてください

于 2013-01-23T02:54:09.223 に答える
1

グローバル オブジェクトを使用できます。

var myVars = {};
function bake(cookietype,ingredient) {
    myVars[ingredient] = document.recipes[ingredient].value;
    document.cookie = cookietype + "=" + myVars[ingredient];
}

しかし、イアンが指摘したように、これは正しい方法ではありません。

于 2013-01-23T02:55:04.777 に答える