我在JavaScript中遇到全局变量问题。我试过的是在函数外声明变量,然后在函数内改变它,然后调用另一个函数。从我读过的内容来看,这应该是有效的,但它只是给了我不确定的东西。这是我制作的卡片绘制游戏的代码。Javascript全局变量不能正常工作
var randSuit;
function getRandCard() {
var randNum;
var randSuit;
var randVal;
randNum = Math.floor(Math.random()*13)+1;
if (randNum == 1) {
randVal = "2";
} else if (randNum == 2) {
randVal = "3";
} else if (randNum == 3) {
randVal = "4";
} else if (randNum == 4) {
randVal = "5";
} else if (randNum == 5) {
randVal = "6";
} else if (randNum == 6) {
randVal = "7";
} else if (randNum == 7) {
randVal = "8";
} else if (randNum == 8) {
randVal = "9";
} else if (randNum == 9) {
randVal = "10";
} else if (randNum == 10) {
randVal = "Jack";
} else if (randNum == 11) {
randVal = "Queen";
} else if (randNum == 12) {
randVal = "King";
} else if (randNum == 13) {
randVal = "Ace";
}
randNum = randNum = Math.floor(Math.random()*4)+1;
if (randNum == 1) {
randSuit = "Hearts";
} else if (randNum == 2) {
randSuit = "Clubs";
} else if (randNum == 3) {
randSuit = "Spades";
} else if (randNum == 4) {
randSuit = "Diamonds";
}
console.log(randSuit);
var randCard = (randVal + " of " + randSuit);
//Return the Value of the randomly chosen Card.
return (randCard);
}
//This function calls the random card from the function above, then applies logic to see if it's the same, then outputs the result.
$(function() {
$('#drawCard').click(function() {
var e = document.getElementById("faceValue");
var faceValue = e.options[e.selectedIndex].text;
var e = document.getElementById("suit");
var suit = e.options[e.selectedIndex].text;
$('#oneCardContainer').slideDown('slow');
var pickedCard = (faceValue + " of " + suit);
var randCard = getRandCard();
console.log (randSuit);
if (pickedCard == randCard) {
$("#oneCardResults").val("You Chose a " + pickedCard + " and got a " + randCard + ". \nYou Win!");
} else if (pickedCard != randCard) {
$("#oneCardResults").val("You Chose a " + pickedCard + " and got a " + randCard + ". \nYou Lose!");
}
});
});
这是我试过的代码和我试图通过的变量是randSuit。我究竟做错了什么?
不再是相关的,但你不能真正通过'that'在'randSuit'得到除非'那是'窗口'。 – jli 2014-05-11 00:17:49
@jli true,除非你声明你的变量是这样的:'this.randSuit = val;' – 2014-05-11 06:45:12