任务完成后限制/停止removeChild

时间:2014-03-06 13:31:05

标签: javascript append removechild

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

精化:

USER单击按钮并在下一步附加图像...

代码:

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:Node.removeChild的参数1不是对象。” 意味着即使已删除appendChild,removeChild函数仍然有效。如果没有要删除的内容,如何限制/停止?(一旦用户点击按钮就会触发所有功能,这意味着当没有任何内容可以删除错误时用户点击删除按钮时显示)

2 个答案:

答案 0 :(得分:1)

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

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

文档:Node.hasChildNodes()

答案 1 :(得分:0)

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

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

if (img) holder.removeChild(img);

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

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