【问题标题】:Javascript unable to Show/hide Dom Element (on Pannellum example)Javascript 无法显示/隐藏 Dom 元素(在 Pannellum 示例中)
【发布时间】:2018-09-14 23:13:32
【问题描述】:

当我尝试使用 javascript 调用 document.getElementById(elemId).style.visibility = visible/hidden 隐藏/显示 DOM 中的元素时遇到问题。

这是一个非常奇怪的行为,当我通过 id 获取 DOM 元素并将可见性设置为可见时,在控制台中我可以看到内联样式已被修改但屏幕上的元素仍处于隐藏状态。

我将链接我的问题的小提琴示例,希望有人可以提供帮助

这是我用来隐藏/显示 DOM 元素的函数

function updateHTML(elmId, value) {
  var elem = document.getElementById(elmId);
  if (typeof elem !== 'undefined' && elem !== null) {
    document.getElementById(elmId).style.visibility = value;
    console.log(elem);
  }
}

无论如何,即使直接调用document.getElementById('2').style.visibility = 'visible' 也不起作用

PS 我想要实现的是在感叹号上显示跨度,即对于 css 默认值,隐藏

Fiddle Demo

【问题讨论】:

    标签: javascript dom pannellum


    【解决方案1】:

    当您调用updateHtml 时,该元素尚未创建。

    用于测试在 1 秒后的超时调用中添加了 updateHtml,它可以工作。

    setTimeout(() => updateHTML("8", "visible"), 1000);
    

    jsfiddle demo

    【讨论】:

    • 你成就了我的一天!非常感谢您的提示
    • Maanoo 我想向您展示另一个小提琴。 jsfiddle.net/boLtzbvq 与之前的示例相同,但某些元素是动态生成的。这次你的解决方案不起作用:(你有一些提示吗?:)
    • @Nic 添加了一个正确的监听器而不是超时,并首先生成了点,然后将它们添加到配置中 jsfiddle.net/boLtzbvq/30(抱歉延迟)
    • MaanooAk 你比光还快,你又解决了我的问题。非常感谢:)
    【解决方案2】:

    我检查了您的小提琴,但您在以下代码中提到的 id 不存在:

    updateHTML("8", "visible");
    

    在你的更新函数中你这样做......

    function updateHTML(elmId, value) {
      var elem = document.getElementById(elmId); // <- this line
      if (typeof elem !== 'undefined' && elem !== null) {
        document.getElementById(elmId).style.visibility = value;
        console.log(elem);
      }
    }
    

    但是你得到了不存在元素的 id。

    其他things:

    ID 和 NAME 令牌必须以字母 ([A-Za-z]) 开头,并且可以是 后跟任意数量的字母、数字([0-9])、连字符(“-”)、 下划线 ("_")、冒号 (":") 和句点 (".")。

    【讨论】:

    • 如你所见ibb.co/mGvsRc span 元素 id 存在。无论如何,我会尝试按照您的建议更改 id 和 name 令牌,看看是否会发生变化:)
    • 尝试更改id并继续! ;)
    猜你喜欢
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 1970-01-01
    • 2023-04-03
    相关资源
    最近更新 更多