非常不寻常的JavaScript行为

时间:2009-11-13 15:18:47

标签: 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('tooltip');" />

以下是HTML代码下面的JavaScript:

    <script type="text/javascript">
        function hide(id)
        {
            document.getElementById(id).style.display = 'none';
        }
        function show(id)
        {
            document.getElementById(id).style.display = '';
        }
    </script>

现在这个代码应该没有任何问题。它应该隐藏或显示每个按钮点击的工具提示。现在奇怪的事情就是当我点击它隐藏的隐藏按钮时,当我点击显示没有任何反应。隐藏仍然是隐藏的。

有没有人有类似的问题?它有解决方法吗?也许是另一种完成同样事情的方法(纯JavaScript)?

更新:将其更改为阻止,仍然无效。我的意思是,为什么它会隐藏我点击的按钮,当没有任何连接时?我顺便使用最新的Firefox。而且我在功能上加了警告同样的事情。这是重写的代码:

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

11 个答案:

答案 0 :(得分:4)

似乎没有任何明显的东西会导致这种情况不正常。我猜测有某种拼写错误,未封闭的标签或功能等。尝试在两个函数中添加alert()以查看函数是否被正确调用。

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

要尝试的另一件事:在show函数中,在设置display属性后,尝试在alert属性上执行display以查看它实际上是什么设为:

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

答案 1 :(得分:2)

当我复制粘贴您的代码并将其加载到Google Chrome中时,效果非常好。您可能在原始页面中有拼写错误。

答案 2 :(得分:1)

我认为display =“none”的反面是display =“inline”或display =“block”,具体取决于你希望它出现的方式

答案 3 :(得分:1)

我没有看到您编写的代码有任何特别的错误,但您可能想尝试在show函数上将display设置为'block'。

答案 4 :(得分:1)

我敢打赌啤酒中有两个ID为“工具提示”的元素。

答案 5 :(得分:0)

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

<script type="text/javascript">

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

    </script>

答案 6 :(得分:0)

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

答案 7 :(得分:0)

  1. 检查display='block'事件 - 也许您的css为课程display='none'指定.tooltip

  2. 使用alert()测试您的代码,或使用一些调试器并在show()函数中设置断点。

答案 8 :(得分:0)

我认为你的守则正在运作。但你的tooptip DIV中没有任何内容,这就是你觉得DIV没有显示的原因。

只需在你的DIV中写一些东西。

和secod部分,我的意思是点击隐藏按钮自己。 这似乎是不可能的,因为在您的代码中似乎。

答案 9 :(得分:0)

由于您使用的是Firefox,因此您可以查看Firefox的“错误消息控制台”。打开工具并从那里选择它。从这里你可以看到你的JavaScript失败的地方,如果它失败了。

答案 10 :(得分:0)

您可以尝试在功能块的末尾添加分号,就在结束括号之后。

我发现没有它们,我的功能不能正常工作并且有非常不寻常的行为。