克隆后Javascript无法取消隐藏元素?

房屋3272

我正在做一些事情,其中​​多个函数会将各种事件侦听器添加到最初隐藏的div中,我们称之为它secretBlock在任何给定时间点只有一个处于活动状态,但是所有上述功能将通过以下方式对其进行操作:

  • 首先克隆sercetBlock以确保没有以前的侦听器仍被连接
  • 然后将显示设置为 flex

HTML:

<div id="secretBlock" hidden>Secret</div>

JavaScript:

function exampleFuction() {
    var secretBlock = document.getElementById('secretBlock');
    var secretClone = secretBlock.cloneNode(true);
    secretBlock.parentNode.replaceChild(secretClone, secretBlock);
    secretBlock.style.display = 'flex';
    ....
 }

但是最后一部分(设置显示)没有触发。

我以为这与异步性有关,但是

setTimeout(function(){ secretBlock.style.display = 'flex' }, 999);

也没有效果。

但是,其中一个函数会在设置显示后立即将div附加到另一个div内,从而导致其正常触发:

secretBlock.parentNode.replaceChild(secretClone, secretBlock);
secretBlock.style.display = 'flex';
otherDiv.appendChild(secretBlock);

经过一些测试,我发现设置显示(现在还是以后)或在代码中的位置都没关系,只要secretBlock将其附加到另一个div上,显示更改就会注册,否则保持隐藏状态。

.......这让我对正在发生的事情一无所知,因此,任何见识都将不胜感激~~

房屋3272

是参考问题。
经过.replaceChild()内容替换secretBlock,最初的参考:

var secretBlock = document.getElementById('secretBlock') 

变得过时,因为它仍然指向旧的原始元素,该元素不再与html文档分离。因此,您需要将引用重定向到克隆的元素:

secretBlock.parentNode.replaceChild(secretClone, secretBlock);
secretBlock = document.getElementById('secretBlock');
secretBlock.style.display = 'flex';

谢谢Dr.Molle

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

jQuery在克隆后无法显示隐藏表单

来自分类Dev

用javascript将其隐藏后取消隐藏覆盖菜单

来自分类Dev

使用javascript隐藏和取消隐藏div元素

来自分类Dev

jQuery customSelect插件安装后无法选择克隆的元素

来自分类Dev

无法隐藏/取消隐藏SKSpriteNode

来自分类Dev

使用javascript取消隐藏表单中的某些元素

来自分类Dev

无法在javascript中的表单内隐藏元素?

来自分类Dev

从克隆的元素中删除隐藏的元素

来自分类Dev

使用Java取消隐藏元素

来自分类Dev

在元素被隐藏/取消隐藏的函数中,使用javascript移动(而不滚动)至锚点

来自分类Dev

换行后隐藏元素

来自分类Dev

rHighcharts隐藏/取消隐藏无法正常工作

来自分类Dev

用户更改Javascript中的选项后删除或隐藏元素

来自分类Dev

在javascript中按下键后隐藏html元素

来自分类Dev

无法隐藏元素

来自分类Dev

无法隐藏 li 元素

来自分类Dev

选中/取消选中复选框以使用 javascript 显示/隐藏输入文件元素

来自分类Dev

Javascript似乎无法正确处理以后显示的隐藏元素

来自分类Dev

JavaScript/HTML 隐藏的表单元素无法正确显示

来自分类Dev

无法隐藏我使用 javascript 和 jquery 生成的 html 元素

来自分类Dev

克隆后如何删除原始元素?

来自分类Dev

复制或克隆后更改元素名称

来自分类Dev

元素加载后如何隐藏?

来自分类Dev

jQuery:显示后隐藏元素?

来自分类Dev

单击后隐藏Javascript

来自分类Dev

取消设置JSON数组的某些元素后无法绘制Google标记

来自分类Dev

JavaScript隐藏元素功能

来自分类Dev

Javascript显示/隐藏元素

来自分类Dev

无法取消隐藏按钮,但ViewDidLayoutSubviews()中除外

Related 相关文章

热门标签

归档