Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript变量未定义-局部问题?_Javascript_Html - Fatal编程技术网

Javascript变量未定义-局部问题?

Javascript变量未定义-局部问题?,javascript,html,Javascript,Html,HTML代码: <!DOCTYPE html> <html lang="en"> <head> <title>CCG Sim</title> <link rel="stylesheet" type="text/css" href="main.css"> <script src="C:\Users\Tyler\Desktop\jquery-3.1.1.js">

HTML代码:

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>CCG Sim</title>
        <link rel="stylesheet" type="text/css" href="main.css">
        <script src="C:\Users\Tyler\Desktop\jquery-3.1.1.js"></script>
        <script src="C:\Users\Tyler\Desktop\main.js"></script>
    </head>
    <body>
        <form method="post">
            Enter Decklist:<br>
            <textarea id="txtar_decklist" cols="1" rows="100"></textarea><br><br>
            <input type="submit" value="Create Deck" onclick="CreateDeck()"> 
        </form>
        <button type="button" onclick="DrawCard()">Draw Card</button>
    </body>
</html>

CCG Sim卡
输入Decklist:


抽牌
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;
        }
    }
};
var decklist=[];
函数CreateDeck(){
var deckform=document.getElementById(“txtar_decklist”).value.split('\n');
var stats=[];
对于(var n=0;n
问题:

每个函数中都未定义变量Decklist。当然,第一个函数可以为Decklist创建一个对象数组,但是它的值在以后的第二个函数使用时不会继续存在(在第二个函数中它只是没有定义)

基本上,用户将在表单中插入一个列表,CreateDeck()函数(理想情况下)将从提供的列表中创建一个对象数组。稍后,只要用户需要,他或她就会单击Draw Card按钮,该按钮将调用DrawCard()。第二个函数无法访问Decklist的值,因为它在此函数中未定义


我在这里没有得到什么?有什么建议吗?

我认为整个代码都很完美。但是您必须删除每个函数结尾处的分号。

我认为整个代码是完美的。但是您必须删除每个函数结束时的分号。

(Math.floor(Math.random()*decklist.length+1))-1
似乎只是
Math.floor(Math.random()*decklist.length)
。我遗漏了什么吗?请在控制台中显示错误,并描述如何产生错误。您还可以使用演示您得到的错误。在那里发布后,每个人都可以重现您遇到的错误。一个问题是,您在单击“创建数据组”时提交表单-因为您没有表单的
操作
,结果是页面发布到当前URL-这基本上会刷新页面-因此
数据组列表
将为空。。。是
decklist
未定义还是
decklist[randomcard]
?是否有任何理由需要使用表单?Decklist未定义。所以我应该避免在这种情况下使用表单?我对每件事都还很陌生,所以如果这件事非常简单,我很抱歉。
(Math.floor(Math.random()*decklist.length+1))-1
似乎只是
Math.floor(Math.random()*decklist.length)
。我遗漏了什么吗?请在控制台中显示错误,并描述如何产生错误。您还可以使用演示您得到的错误。在那里发布后,每个人都可以重现您遇到的错误。一个问题是,您在单击“创建数据组”时提交表单-因为您没有表单的
操作
,结果是页面发布到当前URL-这基本上会刷新页面-因此
数据组列表
将为空。。。是
decklist
未定义还是
decklist[randomcard]
?是否有任何理由需要使用表单?Decklist未定义。所以我应该避免在这种情况下使用表单?我对每件事都很陌生,所以如果这件事非常简单,我向你道歉。