問題があります。私はJavaScriptのテトリスゲームをしようとしています(学習のため)。しかし、私はsetInterval(またはsetTimeout)関数を使用することはできません。私がしたいのは、2000msごとに次のケースの色を変えることです。テトリス・イン・ジャバスクリプト:setInterval setTimeoutの動作
HTMLのCODE:
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>PROJET : PROGRAMMATION COTE CLIENT</title>
<link rel="stylesheet" type="text/css" href="index.css">
</head>
<body>
<div class="all">
<div id="A">
<span id="pos1A"></span>
<span id="pos2A"></span>
<span id="pos3A"></span>
<span id="pos4A"></span>
<span id="pos5A"></span>
<span id="pos6A"></span>
<span id="pos7A"></span>
<span id="pos8A"></span>
<span id="pos9A"></span>
<span id="pos10A"></span>
</div>
</div>
<script src="classes.js"></script>
<script src="indexjs.js"></script>
</body>
</html>
CSSコード:
.all {
display: flex;
flex-direction: column;
}
.all > div {
display: flex;
flex-direction: row;
}
.all > div > span {
width: 20px;
height: 20px;
border: 1px solid gray;
}
JS CODE:
var array = ['pos1A','pos2A','pos3A','pos4A','pos5A','pos6A','pos7A','pos8A','pos9A','pos10A '];
function downmove(i) {
var element = document.getElementById(array[i]);
element.style.backgroundColor = 'green';
console.log(element);
}
var i;
for(i=0;i<10;i++) {
setInterval(downmove(i),2000);
}
は、私はすべてのブロックを一つの色1を変更したいのですが、実際に色すべて行の行。それは私の間隔がうまくいかないようです。あなたのsetInterval
呼び出しが間違っているためです
リーディング[ドキュメント](https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setInterval)は常に有用です。 'setInterval'を使う場合は' for'ループを削除するか、代わりに 'setTimeout'を使います。この場合、' i'の値にクロージャーの問題があります... – Teemu
ありがとう。私は閉鎖についてまだ読んでいないが、私はこの小さなプロジェクトには必要ないと考えていた。 – WaLinke