前提・実現したいこと
javascriptで数独を作ろうと思っております。
以下のコードで実行してみるとエラーはでないのですが、
試しに一番上の行を
0,1,2,3,4,5,6,7,8
と選択してみると
0のところが9になって、出力されてほしいのですが、上手くいきません。
0のところが、123456789なってそのまま出力されます。
123456789はkouhoという変数でおいているので、replaceがおかしいのか、もしくはどこかで上書きされて123456789に戻ってしまっているのかもしれません。
コードを書いていただかなくても構いません。
「ここのせいで、上手くいかないんだよ!」など、些細なアドバイスでも構いませんので、よろしくお願い致します。
該当のソースコード
html
1 <div id="box"></div> 2 <button type=“button” onclick="buttonClick()">決定</button> 3 <button type=“button” onclick="judge()">計算</button> 4 <div id="ans"></div> 5
javascript
1var values=[] 2function buttonClick(){ 3 for(let i=1 ; i<=9 ; i++){ 4 values[i-1] = []; 5 for(let j=1 ; j<=9 ; j++){ 6 values[i-1][j-1] = document.getElementById("num"+ i + "_" + j).value; 7 } 8 } 9} 10 11 12//表示させる関数 13function output(){ 14 let str=""; 15 for(let i=1 ; i<=9 ; i++){ 16 for(let j=1 ; j<=9 ; j++){ 17 str = str + " " + values[i-1][j-1]; 18 } 19 str = str + "<br>"; 20 } 21 document.getElementById("ans").innerHTML = str; 22} 23 24//i行目で被ったら候補から消す 25function judge_x(i){ 26 let kouho = "123456789"; 27 for(let j=1 ; j<=9 ; j++){ 28 let igyou = values[i-1][j-1]; 29 for(let k=1 ; k<=9 ; k++){ 30 if(igyou ==="k"){ 31 kouho = kouho.replace("k",""); 32 } 33 } 34 } 35 return kouho; 36} 37 38//全ての判断 39function judge(){ 40 for(let i=1 ; i<=9 ; i++){ 41 for(let j=1 ; j<=9 ; j++){ 42 if(values[i-1][j-1]==="0") { 43 // values[i-1][j-1]="×"; 44 values[i-1][j-1] =judge_x(i); 45 } 46 } 47 } 48 output(); 49 } 50 51 52 53//9×9を作る 54function appendBox(i) { 55 let box = document.createElement('div'); 56 box.id = "num" + i; 57 document.getElementById("box").appendChild(box); 58 return box; 59} 60function appendSel(i, box) { 61 let sel = document.createElement('select'); 62 sel.name = box.id + "_" + i; 63 sel.id = box.id + "_" +i; 64 box.appendChild(sel); 65 return sel; 66} 67function appendOpt(i,sel){ 68 let option = document.createElement('option'); 69 option.value = i; 70 option.text = i ; 71 sel.appendChild(option); 72} 73for(let i =1 ; i<=9 ; i++){ 74 let box1 = appendBox(i); 75 for(let i =1 ; i<=9 ; i++){ 76 let sel1 = appendSel(i, box1); 77 for(let i =0 ; i<=9 ; i++){ 78 appendOpt(i, sel1); 79 } 80 } 81} 82 83
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/11 17:06