多字符串变量名在Javascript中不起作用



最近我发布了关于Javascript中动态名称的文章。我继续尝试创建一个多字符串变量名(将字符串和变量组合为一个新的变量名),但似乎不起作用。我很困惑,因为我正在做SO上很多帖子说要做的事情(所以我想无论如何)。

无论如何,这里是我正在使用的动态变量:

var dynamic["replyupvote"+replyid] = false;

然后当我调用它时,我使用:

dynamic["replyupvote"+replyid]

所以我的问题是我哪里错了?如果你想看看我的完整代码:

function replyupvote(replyid, upvotes, downvotes, votesclass, votesnumber) {
    var dynamic["replyupvote"+replyid] = false;
    return function() {
        if (dynamic["replyupvote"+replyid]) {
            dynamic["replyupvote"+replyid] = true;
        }
        else {
            $.ajax({
                url: "http://localhost/postin'/categories/votes.php",
                type: "POST",
                data: { 'itemid': replyid,
                        'userid': <?php echo $_SESSION["logged_in"]; ?>,
                        'action': "upvotes",
                        'type': "reply" },
                success: function() {
                    $("." + votesclass).css("color", "orange");
                    $("." + votesnumber).text(parseInt(upvotes - downvotes) + 1);
                }
            });
            dynamic["replyupvote"+replyid] = true;
        }
    }
}

这段代码在我完成多字符串变量名之前就已经工作了。那么我做错了什么?谢谢!:)


编辑

我想我应该把这个加进去。Javascript抛出了一个错误,即由于语法不正确,没有定义函数。

无论您在这里所做的是否有意义,要在对象上动态创建属性,您都需要确保JS知道它是一个对象,而不是数组。因此,在尝试创建动态对象属性之前,请明确声明dynamic为对象:

var dynamic = {};
dynamic["replyupvote"+replyid] = false;

这样至少可以消除语法错误。

您必须首先将dynamic设置为对象

var dynamic = {};
dynamic["replyupvote"+replyid] = false;

variableName[keyName]=值;是对象的语法。

在使用这种表示法之前,您必须告诉js您的变量是一个对象。

最新更新