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'作为第二个参数传递,而是传递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;
}

您可能应该使用设置 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];
}

但这肯定不是 Ian 指出的正确方法。

于 2013-01-23T02:55:04.777 回答