我尝试使用 js 第二次删除子元素,但收到错误消息(未捕获的 DOMException:无法在"节点"上执行"removeChild":要删除的节点不是此节点的子节点。 在 切换第三张幻灯片(
div,获取ImgDiv包含一个带有id的img,getImageId,每次按下按钮时我都会尝试删除和替换它。我尝试对事件侦听器中的第二个函数使用 setTimeout 方法,但它仍然给出相同的错误。
var getImageId = document.getElementById("cat");
var obtainImgDiv = document.getElementById("images4slideshow");
function SwitchForSecondSlide(getImageId,obtainImgDiv) {
obtainImgDiv.removeChild(getImageId);
var newImg = document.createElement("img");
newImg.setAttribute("id", "cat");
newImg.setAttribute("src", "Images/cat2.jpg");
newImg.setAttribute("class", "cat");
obtainImgDiv.appendChild(newImg);
}
slideShowButton2.addEventListener("click", function () {
SwitchForSecondSlide(getImageId,obtainImgDiv);
}, false);
function SwitchForThirdSlide(getImageId,obtainImgDiv) {
obtainImgDiv.removeChild(getImageId);
}
slideShowButton3.addEventListener("click", function() {
SwitchForThirdSlide(getImageId,obtainImgDiv);
},false)
新创建的映像var newImg = document.createElement("img");
未设置为您的obtainImgDiv
。 obtainImgDiv
在 starup 期间只执行一次,因此它仍然包含旧子变量,您可以简单地替换全局变量(最简单的更改(
而不是var newImg = document.createElement("img");, you can try
获取ImgDiv = document.createElement("img"(; 并将包含newImage
变量的其他语句更改为obtainImgDiv