3

我有这个代码:

<script type="text/javascript">
function changestate()
{
    var StateTextBox = document.getElementById("State");
    var IgnoreTextBox = document.getElementById("Ignore");
    var PlayButton = document.getElementById("Play");
    if(document.getElementById("Play").onclick == true)
    {
        StateTextBox.value = "Happy";   
    }
}
</script>
<input TYPE="button" VALUE="Play with Pogo" id="Play" onClick="changestate();"/>

我想知道何时单击该按钮,并在 if 语句中单击该 if 按钮。我想知道这一点,以便我可以更改文本框中的值。问题是,我不知道如何判断按钮何时被点击。如果你能帮助我,那就太好了。

4

3 回答 3

7

onclick属性标识当用户单击此特定元素时应该发生什么。在您的情况下,您要求运行一个函数;当函数运行时,您可以放心,该按钮已被单击——毕竟这就是函数本身如何启动(除非您以其他方式调用它)。

您的代码有点混乱,但是假设您有两个按钮,并且您想知道单击了哪个按钮,并通过stateTextBox值通知用户:

(function () {
    // Enables stricter rules for JavaScript
    "use strict";
    // Reference two buttons, and a textbox
    var playButton = document.getElementById("play"),
        stateTextBox = document.getElementById("state"),
        ignoreButton = document.getElementById("ignore");
    // Function that changes the value of our stateTextBox
    function changeState(event) {
        stateTextBox.value = event.target.id + " was clicked";
    }
    // Event handlers for when we click on a button
    playButton.addEventListener("click", changeState, false);
    ignoreButton.addEventListener("click", changeState, false);
}());

您可以在http://jsfiddle.net/Y53LA/现场测试此代码。

请注意我们如何在playButton和上添加事件侦听器ignoreButton。这允许我们保持我们的 HTML 干净(不需要onclick属性)。changeState每当用户单击它们时,这两者都会触发该功能。

changeState函数中,我们可以访问一个event对象。这为我们提供了有关发生的特定事件(在本例中为click事件)的一些详细信息。该对象的一部分是target,它是被单击的元素。我们可以从该元素中获取属性id,并将其放入value.stateTextBox

这是调整后的 HTML:

<input type="button" value="Play with Pogo" id="play" />
<input type="text" id="state" />
<input type="button" value="Ignore with Pogo" id="ignore" />​
于 2012-11-18T02:02:30.897 回答
0

您可以通过使用标志(真或假)知道按钮是否被点击。

        var flag = false;

    window.addEventListener("load", changestate, false);

    function changestate() {

        var StateTextBox = document.getElementById("State");
        var PlayButton = document.getElementById("Play");

        PlayButton.addEventListener("click", function () {
            flag = true;
        })

        PlayButton.addEventListener("click", change)

        function change() {
            if (flag) {
                StateTextBox.value = "Happy";
            }
        }
    }
于 2015-09-12T00:36:26.380 回答
0

多年后回顾这一点,您可以简单地执行以下操作:

<script type="text/javascript">
function changestate(action)
{
    var StateTextBox = document.getElementById("State");
    var IgnoreTextBox = document.getElementById("Ignore");
    var PlayButton = document.getElementById("Play");
    if(action == "Play")
    {
        StateTextBox.value = "Happy";   
    }
}
</script>
<input TYPE="button" VALUE="Play with Pogo" id="Play" onClick='changestate("Play");'/>
于 2016-08-16T19:26:26.543 回答