前提・実現したいこと
javascriptのswitch文を使い(if文は使わず)、htmlのonclickイベントとして、問いに対する解答を表示する要素をcreateし、一度解答を表示させたら、
その後はその要素の内容を書き換える形でonclickイベントを発生させたいです。
発生している問題・エラーメッセージ
要素が書き換えられるのではなく、onclickイベントを設定している要素を選択すると、新規に要素が追加されていってしまう。
該当のソースコード
javascript
1"use strict"; 2var change; 3function changeRed(){ 4 change = 1; 5} 6function changeBlue(){ 7 change = 2; 8} 9function changeYellow(){ 10 change = 3; 11} 12function remove(){ 13 var element =document.querySelector(".answered"); 14 switch(element){ 15 case false: 16 resultAnswer(); 17 break; 18 case true: 19 element.remove(); 20 resultAnswer(); 21 break; 22 default: 23 resultAnswer(); 24 } 25} 26function resultAnswer(){ 27 var result; 28 switch(change){ 29 case 1: 30 result = "不正解①"; 31 var tag = document.createElement("p"); 32 tag.classList.add('answered'); 33 var text = document.createTextNode(result + "です。"); 34 document.body.appendChild(tag).appendChild(text); 35 break; 36 case 2: 37 result = "不正解②"; 38 var tag = document.createElement("p"); 39 tag.classList.add('answered'); 40 var text = document.createTextNode(result + "です。"); 41 document.body.appendChild(tag).appendChild(text); 42 break; 43 case 3: 44 result = "正解"; 45 var tag = document.createElement("p"); 46 tag.classList.add('class1'); 47 var text = document.createTextNode(result + "です。"); 48 document.body.appendChild(tag).appendChild(text); 49 break; 50 } 51} 52
html
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>JavaScriptの学習</title> 7</head> 8<body> 9 <p>SWITCH文①</p> 10 <p>レモンの色は何色でしょうか</p> 11 <p id="red" class="red" onclick="changeRed();remove();">赤です</p><br> 12 <p id="blue" class="blue" onclick="changeBlue();remove();">青です</p><br> 13 <p id="yellow" class="yellow" onclick="changeYellow();remove();">黄です</p><br> 14 <script src="js/practice.js"></script><!--//フォルダ名jsの中のtask_switch_1.jsというファイルを読み込む--> 15</body> 16</html>
試したこと
jsの22行目(remove()のswitch文)にdefaultを入れて操作したところ、falseとtrueには反応していないことがわかりました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー