【发布时间】:2020-12-17 17:43:51
【问题描述】:
在我的游戏中,玩家可以选择掷 2、3 或 4 个骰子,然后选择所选择的号码。骰子将被滚动并且最大的数字获胜。但是,当用户选择要滚动的 3 或 4 个骰子时,我无法在按下提交按钮时触发的事件侦听器中获取 var randomNumber1 - var randomNumber4。我需要那些var 来继续编码。谁能帮忙谢谢。
在我的最后 4 行 javascript 代码中,if (noOfChoices === "3")、console.log(userChoices); 没有打印,即使上面的 if (noOfChoices === "2") 的情况有效。 chrome开发工具上显示的错误信息是:
index.js:91 Uncaught ReferenceError: randomNumber1 is not defined
at HTMLAnchorElement.<anonymous> (index.js:91)
谁能帮忙谢谢。
这是我的 javascript 代码:
function diceRoll() {
var randomNumber1 = Math.floor(Math.random() * 6 + 1);
var Image1 = "dice" + randomNumber1 + ".png";
document.querySelectorAll("img")[1].setAttribute("src", Image1);
var randomNumber2 = Math.floor(Math.random() * 6 + 1);
var Image2 = "dice" + randomNumber2 + ".png";
document.querySelectorAll("img")[2].setAttribute("src", Image2);
var randomNumber3 = Math.floor(Math.random() * 6 + 1);
var Image3 = "dice" + randomNumber3 + ".png";
document.querySelectorAll("img")[3].setAttribute("src", Image3);
var randomNumber3 = Math.floor(Math.random() * 6 + 1);
var Image4 = "dice" + randomNumber4 + ".png";
document.querySelectorAll("img")[4].setAttribute("src", Image4);
}
// Storing user noOfChoices
let links = document.querySelectorAll('#list li')
links.forEach((el) => {
el.addEventListener('click', (event) => {
let numberOfChoices = event.target.innerText
document.getElementById('dropdownMenu').innerHTML = `${numberOfChoices}<span class="caret"></span>`)})
// Responding to Submit
document.getElementById("submit").addEventListener("click", function(e) {
e.preventDefault();
// Storing Data into variables
var choice1 = $("#choice1").val();
var choice2 = $("#choice2").val();
var choice3 = $("#choice3").val();
var choice4 = $("#choice4").val();
var noOfChoices = $("#dropdownMenu").text();
var userChoices = [];
// Displaying no. of dices that user chose
if (noOfChoices === "2") {
$("#caption1, #caption2").removeClass("invisible");
$("#caption3, #caption4").addClass("invisible");
}
if (noOfChoices === "3") {
$("#caption1, #caption2, #caption3").removeClass("invisible");
$("#caption4").addClass("invisible");
}
if (noOfChoices === "4") {
$(".caption").removeClass("invisible");
}
$("#submit").html("Again");
// Rolling Dice
diceRoll();
// Determining Winner
if (noOfChoices === "2") {if (randomNumber1 > randomNumber2) {$("#title").html(choice1 + " wins! ????");}
else if (randomNumber2 > randomNumber1) {$("#title").html(choice2 + " wins! ????");}
else if (randomNumber2 = randomNumber1){$("#title").html("Oops, try again!");}
}
if (noOfChoices === "3") {userChoices.push(randomNumber1, randomNumber2,randomNumber3);
console.log(userChoices);
}
})}
这是我的html:
<head>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
</head>
<body>
<div class="container-of-images">
<img src="chick2.png">
<figure>
<img id="img1" class="dice" src="dice6.png">
<figcaption class="caption" id="caption1">Choice 1</figcaption>
</figure>
<figure>
<img id="img2" class="dice" src="dice6.png">
<figcaption class="caption" id="caption2">Choice 2</figcaption>
</figure>
<figure class="threeChoices">
<img id="img3" class="dice" src="dice6.png">
<figcaption class="caption" id="caption3">Choice 3</figcaption>
</figure>
<figure class="fourChoices">
<img id="img4" class="dice" src="dice6.png">
<figcaption class="caption" id="caption4">Choice 4</figcaption>
</figure>
<img src="chick1.png">
</div>
<div class="container-of-forms">
<!-- Dropdown Button -->
<div class="dropdown">
<button class="btn btn-info dropdown-toggle" type="button" id="dropdownMenu" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
0
<span class="caret"></span>
</button>
<ul id="list" class="dropdown-menu dropdown-info" aria-labelledby="dropdownMenu">
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
</ul>
<!-- Input Text Fields -->
<div class="container-inner"> <br>
<input class="text-input-box" id="choice1" type="text" name="" value="" placeholder="Choice 1"> <br>
<input class="text-input-box" id="choice2" type="text" name="" value="" placeholder="Choice 2"> <br>
<input class="text-input-box invisible threeChoices" id="choice3" type="text" name="" value="" placeholder="Choice 3"> <br>
<input class="text-input-box invisible fourChoices" id="choice4" type="text" name="" value="" placeholder="Choice 4">
</div>
</div>
</div>
<h5>The bigger number wins!</h5>
<!-- Submit Button -->
<a href="" id="submit" class="btn btn-info btn-lg" role="button">Go</a>
</div>
</body>
【问题讨论】:
-
无法在另一个函数中获取局部变量。您可以返回值。
-
那行不通。所有
randomNumber变量都在diceRoll范围内,因此您无法在diceRoll之外访问它们...但是有一种方法可以解决它。我会在下面告诉你。 -
顺便说一句。你在
links.forEach((el) => { ... })});忘记了一些右括号 -
@Sascha 我认为最后的结束 } 位于底部......还是我错过了另一个?对不起,我真的找不到它.. 好吧,nvm 我在底部又加了一个},谢谢
-
不,这是来自
document.getElementById("submit").addEventListener("click", function(e) {中的函数(r) 使用 IDE 时,您会看到上述行中缺少}和)。
标签: javascript jquery google-chrome-devtools