【问题标题】:limit/stop removeChild when the task is done任务完成时限制/停止 removeChild
【发布时间】:2014-03-06 13:31:04
【问题描述】:

我正在使用 removeChild 删除 appendChild 图片,removeChild 是由 onclick 事件触发的。

阐述:

用户单击一个按钮并在下一个附加图像...

代码:

var src = "img2/" + selected + ".jpg";
      var img = document.createElement("img");
      img.src = src;
      img.id = 'someImage';

     if ($('#someImage').length === 0){ 
            holder.appendChild(img);
      img.style.display = "inline";
            display =  true;
            console.log(display);
            console.log(country);
            console.log(selected);

用户单击删除按钮以删除附加图像

代码:

selected =  document.getElementById("country").value;
  display = false;
  document.getElementById("country").value = "";
  selected = null;    
  var Myholder = document.getElementById("holder");
  Myholder.removeChild(Myholder.childNodes[0]);

代码可以正常工作,但是在清理我的代码时,我在控制台中看到一个错误,显示 “TypeError: Argument 1 of Node.removeChild is not an object.” 意味着即使 appendChild 已被删除, removeChild 函数仍在工作。没有什么要删除的时候如何限制/停止它?(一旦用户单击按钮,即当用户单击删除按钮时,当没有什么可删除的错误显示时,所有功能都会触发)

【问题讨论】:

    标签: javascript append removechild


    【解决方案1】:

    只检查父节点是否有子节点。如果是,则调用该操作。否则不

    var Myholder = document.getElementById("holder");
    if(Myholder.hasChildNodes()) {
        Myholder.removeChild(Myholder.childNodes[0]);
    }
    

    文档:Node.hasChildNodes()

    【讨论】:

    • 先生,谢谢你,这正是我要找的,当控制台中出现错误甚至是小错误时,我无法忍受,我有点迷失了要使用什么关键字
    【解决方案2】:

    除非图像始终在位置 0,否则您还可以使用 querySelector 专门查找 img 标记,检查查询是否返回元素,如果返回,则将其删除。此代码对未来的更改更加稳健,例如将其他子代添加到 holder(除非它们也是图像)。

    var holder = document.getElementById('holder'),
        img = holder.querySelector('img');
    
    if (img) holder.removeChild(img);
    

    现在,我注意到你在使用 jQuery,所以你也可以这样做:

    $('#holder').find('img').remove();
    

    【讨论】:

      猜你喜欢
      • 2014-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多