我正在写一个基本的赌场javascript游戏,将随机选择3个数字1-10。如果每个号码都是7,它将显示一个警告框,上面写着“你赢了!”#39;在下面的函数中:
function StartSpin(){
var one;
var two;
var three;
var cone;
var ctwo;
var cthree;
var one = Math.floor((Math.random() * 10) + 1);
var two = Math.floor((Math.random() * 10) + 1);
var three = Math.floor((Math.random() * 10) + 1);
if(one == 1){var cone = "Ace";}
if(two == 1){var ctwo = "Ace";}
if(three == 1){var cthree = "Ace";}
document.getElementsByClassName("Spinner")[0].innerHTML= cone
document.getElementsByClassName("Spinner")[1].innerHTML= ctwo
document.getElementsByClassName("Spinner")[2].innerHTML= cthree
}
在点击按钮开始随机化之前的实际页面上说: - | - | - 。单击它时,它会将 - ' s设置为随机数。每个数字/ - 设置都是未定义的,除非有人会说' Ace'这意味着它是1.所以它可能会说:undefined | Ace | undefined,或undefined | undefined | undefined等。 这是HTML:
<div id="GameOne">
<h1>~ Game One ~</h1>
<h2>Try to get three 7's!</h2>
<span class="so Spinner">--</span> |
<span class="st Spinner">--</span> |
<span class="sth Spinner">--</span>
<br/>
<button id="SpinButton" onclick="StartSpin()">Spin!</button>
</div>
编辑:我重新定义变量以查看是否有助于解决未定义的问题(在javascript代码中为fyi)
答案 0 :(得分:2)
简短的回答是,如果您随机获取数字undefined
,则只提供1
以外的变量值。否则它们会保留undefined
- 这是JavaScript中变量的默认值。
这是一些严肃清理的逻辑:
http://jsbin.com/milibusaxe/1/edit?html,js,output
function roll() {
var n = Math.floor((Math.random() * 10) + 1);
return (n === 1 ? 'Ace!' : n);
}
function StartSpin(){
var slots = document.getElementsByClassName("Spinner");
for (var i = 0, e = slots.length; i < e; i++) {
slots[i].innerHTML = roll();
}
}
document.getElementById('SpinButton').addEventListener('click', StartSpin);
作为旁注,三个七或七个?可能想在那个决定。
答案 1 :(得分:1)
它们被设置为未定义,因为您只是在随机选择1时设置变量(cone,ctwo,cthree)。我假设如果没有绘制ace,你想要显示数字吗?
function StartSpin() {
for (var i = 0; i < 3; i++) {
var num = Math.floor((Math.random() * 10) + 1);
if (num == 1) {
num = 'Ace';
}
document.getElementsByClassName("Spinner")[i].innerHTML = num;
}
}
答案 2 :(得分:1)
仅当- (void)appInviteDialog: (FBSDKAppInviteDialog *)appInviteDialog didCompleteWithResults: (NSDictionary *)results {
NSLog(@"%@", results);
}
- (void)appInviteDialog:(FBSDKAppInviteDialog *)appInviteDialog didFailWithError:(NSError *)error {
NSLog(@"%@", error);
}
,cone
或ctwo
(分别)等于1时才定义ctree
,one
和two
。否则,变量未启动,这就是未定义的原因。
请参阅undefined
你可以试试这个: https://jsfiddle.net/0jaxL1hb/1/
答案 3 :(得分:0)
看起来你在变量如何工作方面遇到了一些麻烦。 cone
,ctwo
,&amp;在大多数情况下,cthree
未定义,除非您获得1
。此外,您只需在创建变量时在变量前面声明var
。以后的引用只使用变量名:
var i = 1;
var j = i + 5;
console.log("i is", i, "and j is", j); // will print `i is 1 and j is 5`
没有设定值的声明变量将为undefined
var k;
console.log(k); // will print `undefined`
在您的代码中,您尝试将1
转换为字符串“Ace”,但最终会丢弃one
,two
和three
中的值在所有其他情况下。这应该工作:
function StartSpin() {
// Function to make a number between 1 and 10, if 1 return "Ace" instead
function randomNumberOrAce() {
var number = Math.floor((Math.random() * 10) + 1);
// Check here if it's a `1`, and return "Ace instead", otherwise return the previously stored value
if (number === 1) {
return "Ace";
} else {
return number;
}
}
// Fill in the first three elements of ".Spinner" with three random numbers
document.getElementsByClassName("Spinner")[0].innerHTML = randomNumberOrAce();
document.getElementsByClassName("Spinner")[1].innerHTML = randomNumberOrAce();
document.getElementsByClassName("Spinner")[2].innerHTML = randomNumberOrAce();
}
<div id="GameOne">
<h1>~ Game One ~</h1>
<h2>Try to get three 7's!</h2>
<span class="so Spinner">--</span> |
<span class="st Spinner">--</span> |
<span class="sth Spinner">--</span>
<br/>
<button id="SpinButton" onclick="StartSpin()">Spin!</button>
</div>
答案 4 :(得分:-1)
您已在不同范围内将变量声明两次。
LINKS( WAREHOUSES, VENDORS): COST, VOLUME;