使用conditisional语句在第一次单击时不会触发onclick事件

时间:2014-04-22 20:22:57

标签: javascript css events onclick

这是最奇怪的。

首先:我怀疑它与我的机器有关。

我的问题很简单,我无法在第一次点击时触发有条件的雄蕊。在第一次点击之后,一切都很好并按原样运作。这只适用于我最近写的内容,所有带有类似语句的旧文件都可以正常工作,可以从3个学校复制和粘贴,没有任何问题。

如果我删除条件语句,事情按预期工作,例如,如果我将单个语句放在标签onclick事件中,它在第一次单击时起作用,对于简单函数而不是条件语句也是如此。我有下面的测试代码虽然我不确定它是否会有用,因为我知道代码工作并认为第一次单击找到该功能但不会触发它。正如代码所示,我尝试了几个具有相同结果的事件。

    <script type="text/javascript">
        function test() {
            var test=document.getElementById('test');
            if (test.style.visibility=="visible") {
                alert("yes");       
            }
            else {
                test.style.visibility="visible";
            }
        }
    </script>
</head>
<body>
    <h1 id="test">Hello World You dumbass!</h1>
    <button type="button" onmouseup="test()">test</button>
    <input type="button" onclick="test()" value="text">

有些东西发霉了,我找不到它。任何智能的想法都会受到最高的评价,并且验证编码对其他人的做法也是如此,这也会有所帮助。如果它可能与我的机器上的文本编码有关,我会受伤,尽管所有其他地方的代码都可以产生strang结果,如果应用某种文本格式,就像在MS Word中编写代码一样。

由于

下面的答案击中了头上的钉子或返回true。 为了使这项工作在标记中没有声明的样式,条件就像这样写

<script type="text/javascript">
        function test() {
            var test=document.getElementById('test');
            if (test.style.visibility=="") {
                test.style.visibility="hidden";     
            }
            else {
                test.style.visibility="";
            }
        }
    </script>
</head>
<body>
    <h1 id="test">Hello World You dumbass!</h1>
    <button type="button" onmouseup="test()">test</button>
    <input type="button" onclick="test()" value="text">

我应该抓住这个,但这就是他们假设的结果,就像我假设的那样,因为风格是在头部声明属性转移到元素,但事实并非如此。 希望这可以帮助别人避免我刚刚经历的头痛。

1 个答案:

答案 0 :(得分:6)

如果你调试你的函数,你会发现第一次运行时test.style.visibility没什么,因为这个css属性最初没有设置为你的元素的任何东西。因此,您的第一次运行会进入else,然后设置此属性。现在,由于您在第一次运行中将值设置为“可见”,因此每次后续运行都会发出警报。