Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 事件侦听器_Javascript_Jquery_Dom_Events_Listener - Fatal编程技术网

Javascript 事件侦听器

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

每次单击导航链接并删除旧链接时,如何在DOM中显示新内容。我在点击时一个接一个地获取内容,我想删除旧的内容,并显示我点击的内容,依此类推。 我正在使用数据库中的数组。 代码如下:

$(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”:要删除的节点不是此节点的子节点。
-我在控制台中收到此错误。