Javascript 事件侦听器
每次单击导航链接并删除旧链接时,如何在DOM中显示新内容。我在点击时一个接一个地获取内容,我想删除旧的内容,并显示我点击的内容,依此类推。 我正在使用数据库中的数组。 代码如下:Javascript 事件侦听器,javascript,jquery,dom,events,listener,Javascript,Jquery,Dom,Events,Listener,每次单击导航链接并删除旧链接时,如何在DOM中显示新内容。我在点击时一个接一个地获取内容,我想删除旧的内容,并显示我点击的内容,依此类推。 我正在使用数据库中的数组。 代码如下: $(dataItems).on('click', 'li a', function (event) { event.preventDefault(); let id = $(this).attr('data-code'); // sort them by their data-code const chi
$(dataItems).on('click', 'li a', function (event) {
event.preventDefault();
let id = $(this).attr('data-code'); // sort them by their data-code
const childrenItems = []; // push the sorted array items from db to this array
for (let i = 0; i < Assortments.length; i++) { // This is the array from DB
if (Assortments[i].AssortimentParentID == id) {
childrenItems.push(Assortments[i].Name);
}
}
//draw html table
let perrow = 3, // 3 items per row
count = 0, // flag for current cell
table = document.createElement("table"),
row = table.insertRow();
for (let i of childrenItems) {
let cell = row.insertCell();
cell.innerHTML = i;
count++;
if (count%perrow == 0) {
row = table.insertRow();
}
}
document.querySelector(".deposit-container").appendChild(table);
})
$(数据项)。在('click','li a',函数(事件){
event.preventDefault();
让id=$(this.attr('data-code');//按数据代码对它们进行排序
const childrenItems=[];//将已排序的数组项从db推送到该数组
对于(设i=0;i
prnt.sc/rdnavd-这就是它的外观,如您所见,有两个表,我单击了两个不同的类别,我希望单击一个类别时只显示一个表,并删除之前单击的另一个表。在这一行:document.querySelector(“.deposit container”).appendChild(表)代码>
尝试将appendChild
替换为innerHTML
。Append将继续添加元素,而不是替换它
修订行:
document.querySelector(“.deposit container”).innerHTML=表格代码>
编辑:
如果上述方法不起作用。尝试重置子节点
替换document.querySelector(“.deposit container”).appendChild(表)代码>包含以下内容:
let parent = document.querySelector(".deposit-container");
while(parent.firstChild){
parent.removeChild(parent.firstChild);
}
parent.appendChild(table);
让我知道这是否有帮助…我不知道为什么您需要这种代码。如果您需要为刚刚添加到DOM的新元素添加一个新的事件侦听器。只需定义侦听器,如$('body')。在('click','your selector',function)
。如果你仍然需要做你想要的。您可以使用MutationObserver
-这就是它的外观,因为您可以看到有两个表,我单击了两个不同的类别,我希望在单击一个类别时只显示一个表,并删除之前单击的另一个表。请提供一个JSFIDLE或codepen的工作示例。那就更容易找到解决方案了。代码大概有400行,我想我做不到。我唯一能提供的就是上面的代码。谢谢我在DOM中获得[object HTMLTableElement]。似乎不起作用。谢谢@Dipzera很抱歉,我正在使用手机,如果上述操作不起作用,您可以尝试在重新追加表之前删除节点的子节点removeChild()
。与创建表之前类似吗?或者就在:document.querySelector(“.deposit container”).appendChild(表)之前
?@Dipzera yes位于带有appendChild()
未捕获DomeException的行之前:未能在“节点”上执行“removeChild”:要删除的节点不是此节点的子节点。
-我在控制台中收到此错误。