[英]How i can use "querySelectorAll"?
我的 html:
<label for="answer_1" class="answer_label"><input type="radio" id="answer_1">Answer</label>
<label for="answer_2" class="answer_label"><input type="radio" id="answer_2">Answer</label>
<label for="answer_3" class="answer_label"><input type="radio" id="answer_3">Answer</label>
我的 JS:
var answers = ["Answer_1","Answer_2","Answer_3"];
var answer_labels = document.querySelectorAll(".answer_label");
for (var i = 0; i < answers.length; i++){
answer_labels[i].innerText = answers[i]
}
當我想為我的標簽設置文本時,出現錯誤:
未捕獲的類型錯誤:無法設置未定義的屬性(設置“innerText”)
您在 for 循環中有語法錯誤。
更改for (var i = 0; i <.length; i++)
到for (var i = 0; i < answer_labels.length; i++)
var answers = ["Answer_1","Answer_2","Answer_3"] var answer_labels = document.querySelectorAll(".answer_label"); for (var i = 0; i < answer_labels.length; i++){ answer_labels[i].innerText = answers[i]; }
<label for="answer_1" class="answer_label"><input type="radio" name="choice" id="answer_1">Answer</label> <label for="answer_2" class="answer_label"><input type="radio" name="choice" id="answer_2">Answer</label> <label for="answer_3" class="answer_label"><input type="radio" name="choice" id="answer_3">Answer</label>
如果您只想替換標簽而不破壞內部的單選按鈕輸入,您應該執行以下操作:
var answers = ["Answer_1","Answer_2","Answer_3"] document.querySelectorAll(".answer_label").forEach((l,i)=>{ l.innerHTML=l.querySelector("input").outerHTML+answers[i]; })
<label for="answer_1" class="answer_label"><input type="radio" name="choice" id="answer_1">Answer</label> <label for="answer_2" class="answer_label"><input type="radio" name="choice" id="answer_2">Answer</label> <label for="answer_3" class="answer_label"><input type="radio" name="choice" id="answer_3">Answer</label>
在迭代之前存儲數組的長度以迭代到變量中是一種很好的做法。 這樣,您還可以確保迭代不會 go 超過您在循環中引用的另一個數組的長度。
代碼中還有一個邏輯錯誤。 重寫標簽的innerText
將刪除嵌套的input
元素。 我已將輸入移出下面代碼中的標簽。
var answers = ["Answer_1", "Answer_2", "Answer_3", "Answer_4"]; var answerLabels = document.querySelectorAll(".answer_label"); var length = Math.min(answers.length, answerLabels.length); for (var i = 0; i < length; i++) { answerLabels[i].innerText = answers[i]; }
<label for="answer_1" class="answer_label">Answer</label><input type="radio" id="answer_1"> <label for="answer_2" class="answer_label">Answer</label><input type="radio" id="answer_2"> <label for="answer_3" class="answer_label">Answer</label><input type="radio" id="answer_3">
問題是我沒有在 html 文件中指定“ <!DOCTYPE html>"
...謝謝大家
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.