JScript - 访问函数之间的变量

时间:2016-12-04 05:03:02

标签: javascript

首先发布的内容可能是一个非常基本的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课程,但是一旦课程结束就没有足够的时间去学习它们。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

听起来像是一个范围问题。如果你正在使用require并且每个函数都驻留在它自己的文件中,或者decklist变量正在被其他函数使用require访问,那么desklist var将超出范围。

一种解决方案可能是将decklist设置为窗口范围:

window.decklist = [];

确保可以从页面上的任何内容访问decklist。请注意,您可能必须更改函数中对decklist的任何引用,以便使用window.decklist。