【问题标题】:How to access Javascript array with dynamic variable string如何使用动态变量字符串访问 Javascript 数组
【发布时间】:2015-10-30 00:08:24
【问题描述】:

当用户选择一个单选按钮时,它的 ID 用于通过 jQuery 的 .change() 函数访问一个 javascript 数组,然后是一个 $.each 函数来遍历内容并取消隐藏表单控件。但是,当我运行此代码时,我得到:

未捕获的类型错误:无法使用“in”运算符在程序员中搜索“长度”

**stackoverflow 上提到此错误的其他解决方案似乎引用了 JSON 对象,而不仅仅是普通的 javascript 数组。我确实通过合并一个 IF 语句来询问该变量是否为“程序员”,然后基于该语句执行代码,从而使该代码正常工作。这在我看来效率不高,但它确实允许我使用实际的单词“programmer”而不是动态变量名称“position”(其中将包含程序员)。

单选按钮

<label for="position">Position</label>

程序员
...

数组:

var programmer = [  
    "blah1", 
    "blah2", 
    "blah3"
];

.change() 代码

$(".positionRadios").change(function() {
    var position = $(this).attr('id'); 
    if (position != null) { 
        $.each(position, function (index, value) {
            $("#" + value).show();
        });
    } else {
        $('.system').hide();
    }
});

当我尝试使用 for 循环时,它只是遍历了 id 字符串的每个字母。它没有将字符串与变量数组名称相关联。

解决方案?

【问题讨论】:

  • 不确定您想要做什么,但您使用的是带有字符串 id(位置)的 .each
  • "$.each 函数循环遍历内容并取消隐藏表单控件"循环遍历哪些内容?
  • $.each 函数将遍历数组的内容。所以在这种情况下,它应该循环通过“blah1”、“blah2”等。

标签: javascript jquery arrays for-loop


【解决方案1】:

我在网上找到的所有内容都引用了使用解析 JSON 来将变量字符串视为对象。 In this post,我发现虽然不鼓励使用 eval(),但实际上将字符串呈现为对象/数组。该代码现在可以正常工作。我将继续研究 JSON 选项。

【讨论】:

    猜你喜欢
    • 2018-01-24
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    • 2012-06-24
    相关资源
    最近更新 更多