質問: htmlのtextデータをボタン一つでセルに挿入したいのですが以下のコードで間違っているところはありますか? ``` window.addEventListener('DOMContentLoaded', function(e){ var data=["name","mailaddress","memo"]; document.querySelector('#save').addEventListener('click',function(e){ var t=document.querySelector('#list tbody'); t.innerHTML=""; t=t.appendChild(document.createElement('tr')); data.forEach(function(x){ var td=document.createElement('td'); var inp=document.querySelector('[name="'+x+'"]'); if(inp.type=="radio") inp=document.querySelector('[name="'+x+'"]:checked'); if(inp.type=="checkbox") inp=document.querySelector('[name="'+x+'"]:checked'); td.textContent=inp==null?"":inp.value; t.appendChild(td); }); }); }); ```
回答: checkbox は複数選択される可能性があるので、それでは不備。 if(inp.type=="radio") inp=document.querySelector('[name="'+x+'"]:checked'); if(inp.type=="checkbox") inp=document.querySelector('[name="'+x+'"]:checked'); は、評価後の処理が同じなので評価式にまとめる 「グローバル変数をあまり使わない」と思うのであれば document はグローバルです。 変数 e が未使用なのだからそこら document を探して使う t.innerHTML=""; は、ちょい遅い var td=document.createElement('td'); は、ちょい遅いのでループの外で定義して、中ではコピーして使う -- [javascript セルについて] これの内容と微妙に違うけど中身は同じ人でしょ! せめて閉じてから次の回答するべし。 「聞くことを恥じ」と思っているからこその名前をころころ変えるんでしょ? もっと自分に自信を持てよ! 聞くことは恥でもない。