前提
こんにちは。いつもお世話になっております。
現在web開発の勉強をしている学生です。
簡単なwebページの作成を行っているのですが、自分の書いたコードをなかなかコンパクトにできず気持ち悪いです。
可能な限り冗長なコードをなくしたつもりですが、まだ改善できる点などありますでしょうか。
厳しい意見もためになりますので、よろしくお願いいたします。
実現したいこと
冗長なコードの削除
発生している問題・エラーメッセージ
特になし
該当のソースコード
JavaScript
1window.addEventListener('DOMContentLoaded', function(){ 2 const Qreform = document.getElementById('Qreform'); 3 Qreform.addEventListener('input', function(event){ 4 if (event.target.name == "country") { 5 // プルダウンの処理 6 var show1 = document.getElementById('disp1'); 7 show1.innerText = event.target.value; 8 } else if (event.target.name == "schedule") { 9 // ラジオボタンの処理 10 var show2 = document.getElementById('disp2'); 11 show2.innerText = event.target.value; 12 } else if (event.target.name == "place") { 13 // チェックボックスの処理 14 let checked = document.querySelectorAll('input[name="place"]:checked'); 15 let out = []; 16 checked.forEach((chk) => { 17 out.push(chk.value); 18 }); 19 var show3 = document.getElementById('disp3'); 20 show3.innerText = out; 21 } 22 else if (event.target.name == "budget") { 23 let text = document.querySelectorAll('input[name="budget"]'); 24 let out = []; 25 text.forEach((txt) => { 26 out.push(txt.value); 27 }); 28 var show4 = document.getElementById('disp4'); 29 show4.innerText = out + "円"; 30 } 31 else{ 32 } 33 }); 34}); 35
html
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <title>questionnaire</title> 5 <link rel="stylesheet" type="text/css" href="22331787_Q1.css" /> 6 <script type="text/javascript" src="./22331787.js"></script> 7</head> 8<body> 9 <form id="Qreform"> 10 <table> 11 <caption>研修先希望調査 </caption> 12 <tr> 13 <th> 派遣先</th> 14 <td> 15 <select name="country" > 16 <option value="台湾" />台湾 17 <option value="シンガポール" />シンガポール 18 <option value="フィリピン" />フィリピン 19 </select> 20 </td> 21 <td id="disp1"></td> 22 </tr> 23 <tr> 24 <th>日程</th> 25 <td> 26 <label> 27 <input type="radio" name="schedule" value="3月" id="r"/>3月 28 </label> 29 <label> 30 <input type="radio" name="schedule" value="8月" id="r"/>8月 31 </label> 32 <label> 33 <input type="radio" name="schedule" value="12月" id="r"/>12月 34 </label> 35 </td> 36 <td id="disp2"></td> 37 </tr> 38 <tr> 39 <th>宿泊施設</th> 40 <td> 41 <input type="checkbox" name="place" value="A-HOTEL" id="c1"/> 42 <label for="c1" class="l1">A-HOTEL</label> 43 <input type="checkbox" name="place" value="B-HOTEL" id="c2"/> 44 <label for="c2" class="l1">B-HOTEL</label> 45 <input type="checkbox" name="place" value="C-RESORT" id="c3"/> 46 <label for="c3" class="l1">C-RESORT</label> 47 </td> 48 <td id="disp3"></td> 49 </tr> 50 <tr> 51 <th>予算</th> 52 <td> 53 <input type="text" name="budget">円 54 </td> 55 <td id="disp4"></td> 56 </tr> 57 <tr> 58 <td colspan="3" id="tail"> 59 <input type="submit" name="sendbutton" value="送信" id="button" /> 60 </td> 61 </tr> 62 </table> 63 </form> 64 65</body> 66</html> 67
試したこと
以前の質問で教えて頂いたこと(ループ処理)などを実装。
補足情報(FW/ツールのバージョンなど)
HTML5
Atom
JavaScriptだけではリファクタリングにならないと思います。
HTMLも提示してください。
また、HTMLもある程度改修する前提でも問題ないのでしょうか。
仕様も提示されたほうが良いと思います。
コードの見た目だけ直しても同じ動作をしなければリファクタリングになりません。
m.ts10806様
いつもコメント・回答ありがとうございます。
感謝しております。
大変失礼しました、HTMLのソースコードも追加しました。
はい、HTMLの改修も問題ございません。
何か気づかれた点や改善点等あれば、ご指摘よろしくお願いいたします。
>自分の書いたコードをなかなかコンパクトにできず気持ち悪いです。
どの辺が気持ち悪いのでしょうか?
配列にぶち込んでforで回しifの条件式の判定回数を減らす程度ですか?
そんなの部外者から見ればどうでもいい話だとおもいますが?
コードを見られて馬鹿にされるなどのちんけなプライドは捨てましょう
なりふりかまわないほうが、うまくいきますよ
回答3件
あなたの回答
tips
プレビュー