【发布时间】:2019-03-16 17:32:39
【问题描述】:
嘿!我正在尝试使用 HTML、CSS 和 Javascript 编写 Pexeso 代码。我有随机生成函数(数字不能使用超过一次 - 我用数组解决了这个问题)。然后我有另一个函数调用上述函数并通过返回的 img 元素的编号 id 进行选择并设置图像源。一切看起来都正确 - IDE 和 Google Chrome 不会返回任何错误,但它仍然没有做正确的事情 - 它永远不会获取所有图像。
我正在放置代码并筛选编译后的外观。
HTML
<!DOCTYPE html>
<html lang='cs'>
<head>
<title></title>
<meta charset='utf-8'>
<link href='style.css' rel='stylesheet' type='text/css'>
</head>
<body>
<div class="container">
<img class="pexeso" src="" id="1">
<img class="pexeso" src="" id="2">
<img class="pexeso" src="" id="3">
<img class="pexeso" src="" id="4">
<img class="pexeso" src="" id="5">
<img class="pexeso" src="" id="6">
<img class="pexeso" src="" id="7">
<img class="pexeso" src="" id="8">
<img class="pexeso" src="" id="9">
<img class="pexeso" src="" id="10">
<img class="pexeso" src="" id="11">
<img class="pexeso" src="" id="12">
<img class="pexeso" src="" id="13">
<img class="pexeso" src="" id="14">
<img class="pexeso" src="" id="15">
<img class="pexeso" src="" id="16">
</div>
<script src='app.js'></script>
</body>
</html>
JS
var position;
position = new Array();
function generateNumber(){
//generates random number between 0 and 15
var number = Math.round(Math.random()*15)+1;
//checks if number is already used
for (var i = 0; i <= position.length; i++){
if (position[i] == number){
generateNumber();
}
//returns number
console.log(number);
position.push(number);
return number;
}
}
function mixPexeso(){
for (var i = 0; i <= 7; i++){
//sets images to their location and type their position
var firstImage = generateNumber();
var secondImage = generateNumber();
var image = 'img/image-'+i+'.png';
document.getElementById(firstImage).src = image;
document.getElementById(secondImage).src = image;
}
}
mixPexeso();
【问题讨论】:
-
if (position[i] == number){ generateNumber(); }可能需要是if (position[i] == number){ number = Math.round(Math.random()*15)+1 }我会想到的。否则,您将丢弃新尝试生成数字的结果。但我也不认为你需要重新运行整个 generateNumber() 函数,这似乎有点矫枉过正,你只需要一个新的随机数 -
有更好的方法可以在一个范围内随机生成数字并且它们只使用一次。生成可用数字的数组,随机排序,取出第一个索引。
-
你需要
return generateNumber();
标签: javascript html function return