前提・実現したいこと
:nth-child(数字)の数字に変数を使って
コードを短くしたいです。
for分の部分も変数を使えれば、もっと短くなるはずです。
該当のソースコード
javascript
1// 空欄の1列目のセルを返す 2 var blankcell1_1 = function blankcell1_1(){ 3 var tds=[...document.querySelectorAll('table tr td:nth-child(1)')] 4 var idx=tds.map(x=>x.textContent).indexOf(""); 5 console.log(idx<0?null:tds[idx]); 6 return tds[idx] 7 8 } 9 console.log(blankcell1_1()) 10 11 // 空欄の2列目のセルを返す 12 var blankcell2_1 = function blankcell2_1(){ 13 var tds=[...document.querySelectorAll('table tr td:nth-child(2)')] 14 var idx=tds.map(x=>x.textContent).indexOf(""); 15 console.log(idx<0?null:tds[idx]); 16 return tds[idx] 17 } 18 19 20 // 空欄の3列目のセルを返す 21 var blankcell3_1 = function blankcell3_1(){ 22 var tds=[...document.querySelectorAll('table tr td:nth-child(3)')] 23 var idx=tds.map(x=>x.textContent).indexOf(""); 24 console.log(idx<0?null:tds[idx]); 25 return tds[idx] 26 } 27 28for ( a of 配列1) { 29 // Aグループを三列目まで埋める 30 blankcell1_1().innerText = 配列1[0] 31 配列1.shift(); 32 blankcell2_1().innerText = 配列1[0] 33 配列1.shift(); 34 blankcell3_1().innerText = 配列1[0] 35 配列1.shift(); 36 }
試したこと
javascript
1for(let i = 1; i < 配列1.length; i++){ 2 var blankcell1_1 = function blankcell1_1(i){ 3 var tds=[...document.querySelectorAll('table tr td:nth-child(i)')] 4 var idx=tds.map(x=>x.textContent).indexOf(""); 5 console.log(idx<0?null:tds[idx]); 6 return tds[idx] 7 } 8 blankcell1_1(i).innerText = 配列1[0] 9 配列1.shift(); 10} 11
発生している問題・エラーメッセージ
Uncaught DOMException: Failed to execute 'querySelectorAll' on 'Document': 'table tr td:nth-child(i)' is not a valid selector. at blankcell1_1 (http://127.0.0.1:5500/ainori/script.js:128:30)
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。