Nedávno som uverejnil príspevok o Dynamických názvoch v systéme WindowsJavascript. Išiel som do toho a pokúsil som sa vytvoriť názov premennej s viacerými reťazcami (kombináciu reťazca a premennej, aby sa vytvoril nový názov premennej) a zdá sa, že to nefunguje. Som veľmi zmätený, pretože robím to, o čom hovoria mnohé príspevky v informačnom systéme (takže si myslím, že aj tak).
Každopádne tu je dynamická premenná, ktorú používam:
var dynamic["replyupvote"+replyid] = false;
a potom, keď to volám, používam:
dynamic["replyupvote"+replyid]
Takže moja otázka je, kde sa mýlim? Ak by ste chceli vidieť môj úplný kód:
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;
}
}
}
Tento kód fungoval skôr, ako som prechádzal v názvoch premenných Multi String. Čo teda robím zle? Ďakujem! :)
UPRAVIŤ
Myslel som, že by som to mal zahodiť. Javascript vyvolá chybu, že funkcia nie je definovaná kvôli nesprávnej syntaxi.
odpovede:
1 pre odpoveď č. 1Bez ohľadu na to, či to, čo tu robíte, dáva zmyselalebo nie, ak chcete dynamicky vytvárať vlastnosti objektu, musíte sa uistiť, že spoločnosť JS vie, že ide o objekt, nie o pole. Skôr než sa pokúsite vytvoriť vlastnosť dynamického objektu, explicitne vyhláste dynamic
ako objekt:
var dynamic = {};
dynamic["replyupvote"+replyid] = false;
To by malo prinajmenšom zbaviť syntaktickú chybu.
1 pre odpoveď č. 2
Najprv by ste museli nastaviť dynamiku ako objekt
var dynamic = {};
dynamic["replyupvote"+replyid] = false;
variabilný názov [keyName] = hodnota; je syntax objektu.
Pred použitím tohto zápisu musíte povedať, že vaša premenná je objekt.