以下のコードにつきまして、うまくいかない部分があり、その点につきましてお聞きしたいです。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script></script> <style> #content_box{ margin:100px auto; width:300px; height:300px; border-radius: 50%; background-color:red; border:1px solid red; display:flex; flex-direction:column; justify-content:center; align-items:center; text-shadow:1px 1px 1px rgba(255,255,255,0.7); } #content{ text-align:center; font-size:50px; font-weight: bold; color:#fff; } </style> </head> <body> <button id="content_box"> <p id="content">?</p> </button> <script> document.addEventListener('DOMContentLoaded',function(){ let data = document.getElementById('content_box'); data.addEventListener('click',function(){ let search_data = data.textContent; // console.log(search_data); let items = ['凶','吉','末吉','中吉','大吉']; let result = items.indexOf(search_data); console.log(result); if(!result == -1){ items.splice(result,1); } let random = Math.floor(Math.random() * items.length); document.getElementById('content').innerHTML = '<p class="content">' + items[random] + '</p>'; },false); },false); </script> </body> </html>
上記のコードは簡易なおみくじアプリのようなもので、ボタンを押す度にlet items = ['凶','吉','末吉','中吉','大吉'];
この中からランダムに文字が取得され表示されるといったものです。
うまくいかない部分なのですが、「let result」の値がなんどクリックされても常に「-1」となってしまっているといった点です。button要素の初期値は「?」であり、itemには含まれていないため、「-1」を返すのは理解できるのですが、2回目のクリックでは、itemsの中に格納されている値がsearch_dataとしておくられてくる為、itemsのインデックス番号を返すのではないかとの想定だったのですが、現状何度クリックしても「-1」がresultに格納されてしまっている状態です。
何故このような現象が起きてしまっているか分からない為、ご助言など頂けましたら幸いです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/08/15 01:16
2019/08/15 01:48
2019/08/15 02:13
2019/08/15 02:16