前提・実現したいこと
初期状態でストップボタンを押してから、スタートとストップボタンを交互に押していくと、16マス目に色がつく前にスタートボタンが押せなくなってしまいます。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <title>ルーレット</title> <link rel="stylesheet" href="roulette.css" /> <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script> <script> var interval_id; var n; var i = 1; var go = 4; var nums = []; var ran_num; var idx;</head> <body> <div id="roulette"> <table id="matrix"></table> <div class="button"> <button class="start">スタート</button> <button class="stop">ストップ</button> <button class="reset">リセット</button> </div> </div> </body> </html>$(function() { $('.start').click(pre_start); $('.stop').click(stop_r); $('.reset').click(reset_r); for (n = 1; n <= go; n++) { $('#matrix').append("<tr id='target'>"); $('#target').attr('id', 'tr' + n); var j = n * go; while (i <= j) { $('#' + 'tr' + n).append("<td id='target_td' class='case1'>" + i + '</td>'); $('#target_td').attr('id', 'td' + i); i++; } } $('tr').each(function() { $('td', this).each(function() { nums.push($(this).text()); }); }); }); function pre_start() { $('.start').prop('disabled', true); $('.stop').prop('disabled', false); clearInterval(interval_id); interval_id = setInterval(start_r, 50); $('#' + 'td' + ran_num).addClass('case4'); } function start_r() { $('#' + 'td' + ran_num).removeClass('case2'); $('#' + 'td' + ran_num).addClass('case1'); ran_num = nums[Math.floor(Math.random() * nums.length)]; $('#' + 'td' + ran_num).addClass('case2'); } function stop_r() { clearInterval(interval_id); $('.stop').prop('disabled', true); $('.start').prop('disabled', false); $('#' + 'td' + ran_num).addClass('case3'); idx = $.inArray(ran_num, nums); nums.splice(idx, 1); if (nums.length < 1) { $('.start').prop('disabled', true); } } function reset_r() { clearInterval(interval_id); $('.start').prop('disabled', false); nums = []; ran_num = 0; $('td').removeClass('case1 case2 case3 case4'); $('td').addClass('case1'); $('tr').each(function() { $('td', this).each(function() { nums.push($(this).text()); }); }); } </script>
ソースコード
body {
width: 500px
}
.button {
text-align: center;
margin-top: 20px;
}
.start, .stop, .reset {
display: inline-block;
padding: 1px 1.5px;
text-decoration: none;
}
.start:active {
transform: translateY(4px);
}
.start {
color: black;
}
.stop {
color: black;
}
.stop:active {
transform: translateY(4px);
}
.reset {
color: black;
}
.reset:active {
transform: translateY(4px);
}
table {
margin: 0 auto;
}
table {
border: solid 5px black;
border-collapse: collapse;
border-spacing: 0;
font-size: 20px;
}
tr, td {
border: solid 2px black;
}
td {
width: 50px;
height: 50px;
text-align: center;
line-height: 50px;
}
.case1 {
background-color: white;
}
.case2 {
background-color: blue;
}
.case3 {
background-color: red;
}
.case4 {
background-color: gray;
color: black;
}
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー