gpt4 book ai didi

javascript - this.parentNode.parentNode.removeChild 正在移除父节点

转载 作者:行者123 更新时间:2023-11-30 12:56:03 34 4
gpt4 key购买 nike

在我的代码中,函数 displayUserTable 将一些名为 tUserBlock 的 div 附加到名为 centralWindow 的主 div。当您单击 tUserBlock 时,会从名为 userTableClickListener 的 tUserBlock.onclick 函数中弹出一个 div。我希望能够在您单击它时关闭该弹出窗口,因此我添加了一个名为 userPopupClick 的 onclick 函数,其中包含以下代码:

this.parentNode.parentNode.removeChild(this.parentNode);

但是当它被点击时,centralWindow div(主 div)和所有内容一起消失了。但我只想隐藏弹出式 div。我不确定我做错了什么?

这是代码,弹出部分在底部:

function displayUserTable() {

var tTop = 15;
var tUserBlock = [];

for (var z = 0; z < (UserData.length); z++) {

tUserBlock[z] = document.createElement('div');
tUserBlock[z].className = 'usertable_item';
tUserBlock[z].id = ('userblock' + z);
tUserBlock[z].style.width = "388px";
tUserBlock[z].style.height = "35px";
tUserBlock[z].style.top = tTop + "px";
tUserBlock[z].style.left = "25px";
tUserBlock[z].userID = z;

tUserBlock[z].onclick = userTableClickListener;

centerWindow.appendChild(tUserBlock[z]);
}
}

function userTableClickListener() {
var tID = this.userID;

var tPopup = document.createElement('div');
tPopup.className = 'usertable_popup';
tPopup.id = 'usertable_popup';
tPopup.onclick = userPopupClick;

centerWindow.appendChild(tPopup);
}

function userPopupClick() {
this.parentNode.parentNode.removeChild(this.parentNode);
}

最佳答案

看起来你可以这样做(假设 centerWindow 在范围内):

centerWindow.removeChild(document.getElementById('usertable_popup'));

您当前方法的问题在于您将在 DOM 层次结构中上升一个额外的级别。弹出窗口是用 centerWindow.appendChild(tPopup); 添加的,所以你有:

centerWindow
popup

但是当您尝试删除它时,您正在做:

  this.parentNode.parentNode.removeChild(this.parentNode)
// ^ ^ ^ ^
// | | body? centerWindow
// | centerWindow
// popup

关于javascript - this.parentNode.parentNode.removeChild 正在移除父节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19069185/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com