非常不寻常的JavaScript行为

非常不寻常的JavaScript行为,javascript,html,Javascript,Html,这是我已经用了很多年的东西,突然我有了这些奇怪的行为,也许有人知道为什么?这是我的HTML: <div class="tooltip" id="tooltip"></div> <input type="button" name="hide" value="hide" onclick="hide('tooltip');" /> <input type="button" name="show" value="show" onclick="show('too

这是我已经用了很多年的东西,突然我有了这些奇怪的行为,也许有人知道为什么?这是我的HTML:

<div class="tooltip" id="tooltip"></div>

<input type="button" name="hide" value="hide" onclick="hide('tooltip');" />
<input type="button" name="show" value="show" onclick="show('tooltip');" />

您需要将显示类型设置回块:

<script type="text/javascript">

              function hide(id)
              {
              document.getElementById(id).style.display = 'none';
              }
              function show(id)
              {
              document.getElementById(id).style.display = 'block';                
              }

    </script>

函数隐藏(id)
{
document.getElementById(id).style.display='none';
}
功能显示(id)
{
document.getElementById(id).style.display='block';
}

当我复制粘贴您的代码并将其加载到google chrome中时,效果非常好。您可能在原始页面中输入了一个错误。

我认为display=“none”的反面是display=“inline”或display=“block”,具体取决于您希望它的显示方式。

我看不出您编写的代码有什么特别的错误,但您可能希望尝试在show函数中将display设置为“block”

似乎没有任何明显的迹象表明这项工作不正常。我猜可能存在某种类型的输入错误、未关闭的标记或函数等。请尝试向这两个函数添加
alert()
,以查看函数是否被正确调用

编辑: 根据您对问题的最新编辑,我倾向于页面上有另一个具有相同ID的项目。请参阅

还有一件事要尝试:在
显示
功能中,设置
显示
属性后,尝试在
显示
属性上执行
警报
,以查看其实际设置为:

alert(document.getElementById(id).style.display);

正如其他人所说,在显示时,您可能希望切换到“块”。除此之外,如果默认情况下它是隐藏的,则必须通过内联样式隐藏它。如果使用外部css文件中的代码将其隐藏,则无法使用javascript再次显示它。

我敢打赌,有两个元素的ID为“tooltip”

  • 检查
    display='block'
    东西-可能您的css为类
    指定了
    display='none'
    。工具提示

  • 使用
    alert()
    测试代码,或者使用一些调试器并在
    show()
    函数中设置断点


  • 我认为你的代码是有效的。但是您的tooptip DIV中没有任何内容,这就是为什么您觉得该DIV没有显示的原因

    在你的分区里写点东西

    第二部分,我的意思是单击隐藏按钮heides本身。
    这似乎是不可能的,就像您的代码中所显示的那样。

    因为您使用的是Firefox,所以您可以查看Firefox的“错误消息控制台”。打开工具并从中进行选择。从这里,您可以看到JavaScript失败的地方,如果失败的话。

    您可以尝试在函数块的末尾,右大括号之后加上分号


    我发现如果没有它们,我的函数就不能正常工作,并且有非常不寻常的行为。

    display='
    可以正常工作。这就像有一个CSS规则没有指定
    display
    属性(而在设置
    display='none'
    的情况下,它是指定的)。尽管根据测试用例描述,这根本不是发生的事情。没关系。OP的脚本在Firefox 3.5中对我起作用,但实际上我会使用display=“bock”来实现,就像这里的高级椰子一样。然后
    getElementById()
    每次调用时都会返回相同的脚本。毕竟这是确定的:)Jauco,不,我不,我只是复制/粘贴在这里是的,我的意思是在整个页面上。像一个不正确嵌套的标签或另一个具有相同ID的项目。从接受的答案中,我推断最后一个就是这种情况。我选中了“将其设置为块”,并且在tolltip css中没有显示设置,只有高度、宽度和背景没有显示设置使用w3验证程序()并确保您的标记有效…然后回来告诉我们。您将答案标记为已接受。到底是什么解决了这个问题?是的,下面这篇文章就是解决方案。
    <script type="text/javascript">
    
                  function hide(id)
                  {
                  document.getElementById(id).style.display = 'none';
                  }
                  function show(id)
                  {
                  document.getElementById(id).style.display = 'block';                
                  }
    
        </script>
    
    alert(document.getElementById(id).style.display);