前提・実現したいこと
知識0から調べながら数独を作ろうと思っております。
今、1~9を入力するのを作っているところです。
とりあえず9マス(ゴールは81マス)作ってみたのですが、繰り返して書いているところをもう少し簡単にできればと思い、質問させていただきました。
htmlのID(num1_1 ~ num1_9)をjavascriptで呼び出すときに
一斉に呼び出す方法はないのかを教えていただきたいです。
該当のソースコード
HTML
1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <title>Document</title> 8 <link rel="stylesheet" href="sudoku.css"> 9 <script src="sudoku.js" defer></script> 10<body> 11 12 <select name="num1_1" id="num1_1"></select> 13 <select name="num1_2" id="num1_2"></select> 14 <select name="num1_3" id="num1_3"></select> 15 <select name="num1_4" id="num1_4"></select> 16 <select name="num1_5" id="num1_5"></select> 17 <select name="num1_6" id="num1_6"></select> 18 <select name="num1_7" id="num1_7"></select> 19 <select name="num1_8" id="num1_8"></select> 20 <select name="num1_9" id="num1_9"></select> 21</body> 22</html> 23
javascript
function
1 document.createElement('option'); 2}; 3 4function takaki(i,num1_j){ 5 let option = document.createElement('option'); 6 option.setAttribute('value',i); 7 option.innerHTML = i ; 8 num1_j.appendChild(option); 9} 10 11let num1_1 = document.getElementById("num1_1"); 12let num1_2 = document.getElementById("num1_2"); 13let num1_3 = document.getElementById("num1_3"); 14let num1_4 = document.getElementById("num1_4"); 15let num1_5 = document.getElementById("num1_5"); 16let num1_6 = document.getElementById("num1_6"); 17let num1_7 = document.getElementById("num1_7"); 18let num1_8 = document.getElementById("num1_8"); 19let num1_9 = document.getElementById("num1_9"); 20 21 22const num = [num1_1,num1_2,num1_3,num1_4,num1_5,num1_6,num1_7,num1_8,num1_9]; 23 24 25cre(); 26for (let j=0 ;j<9 ;j++){ 27 for(let i =0 ; i<=9 ; i++){ 28 takaki(i,num[j]); 29 }; 30};
試したこと
配列を使って
[num1_1,num1_2,num1_3,...,num1_9]
として
for文を使ってやろうとしたのですが
htmlの時点でnum1_1~num1_9を書いてしまっているので
どうにもできませんでした。。。
補足情報(FW/ツールのバージョンなど)
VSコードを使っています
回答1件
あなたの回答
tips
プレビュー