我正在使用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函数仍然有效。如果没有要删除的内容,如何限制/停止?(一旦用户点击按钮就会触发所有功能,这意味着当没有任何内容可以删除错误时用户点击删除按钮时显示)
答案 0 :(得分:1)
只检查父节点是否有子节点。如果是,则调用该动作。否则
var Myholder = document.getElementById("holder");
if(Myholder.hasChildNodes()) {
Myholder.removeChild(Myholder.childNodes[0]);
}
答案 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();