Javascript变量未定义-局部问题?
HTML代码: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">
<!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未定义。所以我应该避免在这种情况下使用表单?我对每件事都很陌生,所以如果这件事非常简单,我向你道歉。