現在、「1度実行した後、再度計算が起動すると、エラーが発生し停止する。更新をしないと計算が起動しない。」という問題が発生しています。
1度実行した後、再度計算が起動すると、エラー「Uncaught DOMException: Failed to execute 'removeChild' on 'Node': The node to be removed is not a child of this node.」が出ます。
removeChildが1度起動しているため、<p>(整数値を入力してください」)の文言が既に削除されており、2度目はremoveChildが<p>を消すことができず、エラーになっているのだと解釈しました。
continueを使うのか等試行錯誤したのですが、どうも違うようです。ヒント等頂けばありがたいです。
index.html
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <title>FizzBuzz問題</title> 6</head> 7<body> 8 <p> 9 FizzNum: <input type="text" id="fizzInput" value="" placeholder ="整数値を入力してください"> 10 </p> 11 <p> 12 BuzzNum:<input type="text" id="buzzInput" value="" placeholder ="整数値を入力してください"> 13 </p> 14 <button id="btn">実行</button> 15 <p>【出力】</p> 16 <p id="p">整数値を入力してください</p> 17 <div id=result></div> 18 19 <script> 20 'use strict'; 21 { 22 23 const fizzForm = document.getElementById ('fizzInput'); 24 const buzzForm = document.getElementById ('buzzInput'); 25 const p = document.getElementById('p'); 26 27 const btn = document.getElementById('btn'); 28 btn.addEventListener('click', function() { 29 30 document.body.removeChild(p); 31 32 const fizzNum = parseFloat(fizzForm.value); 33 const buzzNum = parseFloat(buzzForm.value); 34 35 if (Number.isInteger(fizzNum) && Number.isInteger(buzzNum)) 36 { 37 const result = document.getElementById('result'); 38 result.innerHTML = ""; 39 for (let number = 1; number <= 100; number++) { 40 41 console.log(Number.isInteger(fizzNum)); 42 console.log(Number.isInteger(buzzNum)); 43 44 if(number % fizzNum === 0 && number % buzzNum === 0 ) 45 { 46 const p = document.createElement('p'); 47 p.textContent = ("FizzBuzz" + " "+ number); 48 result.appendChild(p); 49 50 } else if (number % fizzNum === 0) { 51 const p = document.createElement('p'); 52 p.textContent = ("Fizz" + " " + number); 53 result.appendChild(p); 54 55 } else if (number % buzzNum === 0) { 56 const p = document.createElement('p'); 57 p.textContent = ("Buzz" + " " + number); 58 result.appendChild(p); 59 } 60 } 61 62 } else { 63 document.body.appendChild(p); 64 console.log(alert('エラーメッセージ「整数値 を入力してください」')); 65 } 66 67 68 }); 69} 70 </script> 71</body> 72</html>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。