[英]document.querySelector returning null for html inject with javascript
我想我已經發現了具體的問題,所以修改了先前的問題。 我通過以下代碼通過javascript注入一些html:
var clickFn = function(e) {
console.log("click registered");
e.preventDefault();
//console.log("id is" + " " + this.id);
dropdown.classList.remove("open");
btn.innerHTML = this.text;
var activeLink = document.querySelector(".option .active");
searchBoxes = parseInt(this.id);
inputFieldHTML = [];
for(i=0; i<searchBoxes; i++) {
//j = i +1;
inputFieldHTML.push('<input placeholder="Search" class="Box" type="text" id="gearInput' + i + '"' + "/>" + '<div class="ccontainer"><div class="cdropdown"> <button class="ctitle"><span class="cselectorText">dynamically injeced menu</span></button> <ul class="cdropdown-options"> <li class="coption"><a href="#">option 1</a></li> <li class="coption"><a href="#">option2</a></li></ul></div></div></div>' );
}
document.getElementById("inputBoxes").innerHTML = inputFieldHTML.join("");
if (activeLink) {
activeLink.classList.remove("active");
}
this.classList.add("active");
};
for (var i = 0; i < optionLinks.length; i++) {
optionLinks[i].addEventListener("mousedown", clickFn, false);
}
創建這些元素之后,我需要創建以下對象:
var coptionLinks = document.querySelectorAll(".coption a");
var cbtn = document.querySelector(".ctitle");
var cdropdown = document.querySelector(".cdropdown-options");
這些都返回空值,因為它們是在上一個循環創建之前設置的。 我如何確保在for循環完成后進行設置。
我沒有空值。 該示例與您的示例有多大區別?
的HTML
<div id="inputBoxes"></div>
JS
(function() {
var inputFieldHTML = [];
for(i=0; i<3; i++) {
//j = i +1;
inputFieldHTML.push('<input placeholder="Search" class="Box" type="text" id="gearInput' + i + '"' + "/>" + '<div class="cdropdown"> <button class="ctitle"><span class="cselectorText">Dynamically Generated Selector</span></button> <ul class="cdropdown-options"> <li class="coption"><a <href="#">option 1</a></li> <li class="coption"><a <href="#">option 2</a></li></ul></div</div>')
}
document.getElementById("inputBoxes").innerHTML = inputFieldHTML.join("");
var coptionLinks = document.querySelectorAll(".coption a");
var cbtn = document.querySelector(".ctitle");
var cdropdown = document.querySelector(".cdropdown-options");
console.log(coptionLinks);
console.log(cbtn);
console.log(cdropdown);
})()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.