最近我在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会抛出函数未定义的错误。
答案 0 :(得分:1)
无论你在这里做什么都有意义,要动态创建对象的属性,你需要确保JS知道它是一个对象,而不是一个数组。因此,在尝试创建动态对象属性之前,请将dynamic
显式声明为对象:
var dynamic = {};
dynamic["replyupvote"+replyid] = false;
至少应该摆脱语法错误。
答案 1 :(得分:1)
您必须先将动态设置为对象
var dynamic = {};
dynamic["replyupvote"+replyid] = false;
variableName [keyName] = value;是对象的语法。
在使用这种表示法之前,你必须告诉js你的变量是一个对象。