首先发布的内容可能是一个非常基本的JavaScript问题。我有以下代码:
var decklist = [];
function CreateDeck() {
var deckform = document.getElementById("txtar_decklist").value.split('\n');
var stats = [];
for (var n = 0; n < deckform.length; n++){
if (deckform[n] != ""){
stats = deckform[n].split(',');
for (var x = 0; x < parseInt(stats[0],10); x++){
decklist.push({Name: stats[1],
Color: stats[2],
Type: stats[3],
Subtype: stats[4],
Level: stats[5],
Attack: stats[6],
Defense: stats[7],
Drawn: false});
}
}
}
};
function DrawCard() {
var randomcard = 0;
var carddrawn = false;
while (carddrawn == false){
randomcard = (Math.floor(Math.random() * decklist.length + 1)) - 1;
if (decklist[randomcard].Drawn == false){
alert(JSON.stringify(decklist[randomcard]));
decklist[randomcard].Drawn = true;
carddrawn = true;
}
}
};
在我的网页中,用户插入一个套牌列表,并创建一个对象数组来存储每张卡的统计信息/字段。我有第二个按钮,试图&#34;画&#34;具有.Drawn = false属性的卡,然后立即为该属性分配一个真值,以防止用户再次绘制该卡。
我似乎无法弄清楚如何制作变量&#34;分享&#34;这两个功能之间。我已经尝试了我认为的全局变量声明,如上所示,以及尝试创建一个伪全局使用的模块。有人会介意我告诉我我做错了什么吗?
哦,如果我的变量声明对我正在做的事情很好,问题在于第二个函数,请告诉我。
我的背景是VB.Net(也是VBScript + VBA)和SQL。在大学里学过了非常基本的JavaScript和HTML课程,但是一旦课程结束就没有足够的时间去学习它们。
非常感谢任何帮助!
答案 0 :(得分:0)
听起来像是一个范围问题。如果你正在使用require并且每个函数都驻留在它自己的文件中,或者decklist变量正在被其他函数使用require访问,那么desklist var将超出范围。
一种解决方案可能是将decklist设置为窗口范围:
window.decklist = [];
确保可以从页面上的任何内容访问decklist。请注意,您可能必须更改函数中对decklist的任何引用,以便使用window.decklist。