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

多Y字符串变量名在Javascript中不起作用,javascript,jquery,Javascript,Jquery,最近我发布了关于Javascript中动态名称的文章。我继续尝试创建一个多字符串变量名(将一个字符串和一个变量组合成一个新的变量名),但它似乎不起作用。我很困惑,因为我在做很多帖子上说要做的事情(所以我想无论如何) 无论如何,这里是我正在使用的动态变量: var dynamic["replyupvote"+replyid] = false; 当我叫它时,我用: dynamic["replyupvote"+replyid] 所以我的问题是我哪里做错了?如果您想查看我的完整代码: functio

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

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

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;
        }
    }
}
函数replyupvote(replyid、upvotes、downvotes、VoteClass、VoteNumber){
var dynamic[“replyupvote”+replyid]=false;
返回函数(){
if(动态[“ReplyUpNote”+replyid]){
动态[“ReplyUpNote”+replyid]=真;
}
否则{
$.ajax({
url:“http://localhost/postin“/categories/vots.php”,
类型:“POST”,
数据:{'itemid':replyid,
“用户ID”:,
“行动”:“向上投票”,
'type':“reply”},
成功:函数(){
$(“+VoteClass).css(“颜色”、“橙色”);
$(“+votesnumber).text(parseInt(向上投票-向下投票)+1);
}
});
动态[“ReplyUpNote”+replyid]=真;
}
}
}
这段代码在我输入多字符串变量名之前就已经运行了。那么我做错了什么?谢谢!:)


编辑


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

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

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

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

您必须首先将动态设置为对象

var dynamic = {};
dynamic["replyupvote"+replyid] = false;
variableName[keyName]=值;是对象的语法


在使用此符号之前,您必须告诉js您的变量是一个对象。

js中没有动态变量名。你混淆了两个不同的概念。有一些对象属性可以动态存储和检索。哦,我真正的意思是将字符串和变量组合成一个新的变量名。您将数据存储在
动态
对象中,对吗?你是如何定义它的?使用
dynamic[varname]
应该可以。我的意思是你不能这么做。你可以使用对象属性,但不能使用变量。哦,我在看这些帖子:不幸的是,@Tony在你之前一分钟发布了一个相同的答案,所以你有责任让你的答案更具原创性我的stackoverflow生活,总是迟到30到20分钟。我想我需要提高我的回答速度lol