【悩んでいる事】
JavaScriptで小数点の場合、「整数値を入れてください」という処理を行いたいのですが、
整数でも小数点でも、「整数値を入れてください」となってしまいます。
【どうなったら良いか】
・小数点や非数の入力の場合は「整数値を入れてください」という処理
・整数の場合は99までFizzBuzzをループしたいです。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel ="stylesheet" href="css/style.css"> <title>FizzBuzz問題</title> </head> <body> <h1>FizzBuzz問題</h1> <div class ="quest1"> <p>FizzNum:</p> <input type="text" name="fizz" class ="input1" placeholder="整数値を入力してください"></p> </div> <div class ="quest2"> <p>BuzzNum:</p> <input type="text" name="buzz" class ="input2" placeholder="整数値を入力してください"></p> </div> <button id="add">実行</button> <p>【出力】</p> <ul id="target"> </ul> </div> <script src ="js/main.js"></script> </body> </html>
'use strict' window.addEventListener('DOMContentLoaded', ()=>{ document.querySelector('#add').addEventListener('click',()=>{ const FizzNum = parseInt(document.querySelector('[name=fizz]').value); const BuzzNum = parseInt(document.querySelector('[name=buzz]').value); var targetNode=document.querySelector('#target'); var n; while(n=targetNode.firstChild){ n.parentNode.removeChild(n); } if(Number.isInteger(FizzNum)||Number.isInteger(BuzzNum)){ n=Object.assign(document.createElement('li'),{textContent:"整数値を入れてください"}); targetNode.appendChild(n); return; }else{} if(isNaN(FizzNum) ||isNaN(BuzzNum)){ n=Object.assign(document.createElement('li'),{textContent:"整数値を入れてください"}); targetNode.appendChild(n); return; }else{ for (let index = 1; index <= 99; index++) { n=document.createElement('li'); if(index % FizzNum === 0 && index % BuzzNum === 0) { n.textContent=FizzBuzz ${index}; }else if(index % FizzNum === 0) { n.textContent=Fizz ${index}; }else if(index % BuzzNum === 0){ n.textContent=Buzz ${index}; }else{ continue; } targetNode.appendChild(n); } } }); });
【試した事】
if(Number.isInteger(FizzNum)||Number.isInteger(BuzzNum) ===x)
・isIntegerだけでは小数点の判断をしてくれないのかな?と思い比較演算子を入れてみた
・17行目のreturn;を抜いてみた。for文には移行出来ましたが、整数のみ入力しても「整数値を入れてください」とFizzBuzzの記述がループされた
・if文を一つにまとめて、23行目のfor文の上に13行目からをelse ifとした
・上記で試したところ文法エラーが出たため、for文の下に13行目からを入れた
→「整数値を入れてください」とHTMLに出たが、繰り返し処理になり99回整数値を入れてくださいと出た。
他も色々試したのですが、見当違いのものが多かったため割愛させて頂きます。
お手数ですがご教示お願い致します。
回答3件
あなたの回答
tips
プレビュー