【问题标题】:Changing variable by html button通过 html 按钮更改变量
【发布时间】:2013-03-05 12:26:22
【问题描述】:

我正在学习 javascript,我决定创建简单的石头剪刀布游戏。我想让它可以通过按钮控制。所以我用html做了这个:

<div id="game">
    <button onClick="user(rock)">Rock</button>
    <button onClick="user(paper)">Paper</button>
    <button onClick="user(scissors)">Scissors</button>
    <div id="result"></div>
    <br>
    <br>
    <button onClick="test()">DEBUG</button>
</div>

这个在 .js 文件中。

var user = "none";
function user(choice){
    var user = choice;
}

function test(click){
    alert("You chose " + user);
}

所以我认为单击 Rock 按钮后,它会将 var 用户更改为 rock,但事实并非如此。在我点击 rock 然后 Debug 按钮后,我得到“你没有选择”。

【问题讨论】:

    标签: javascript html var


    【解决方案1】:
    <div id="game">
        <button onClick="choose('rock')">Rock</button>
        <button onClick="choose('paper')">Paper</button>
        <button onClick="choose('scissors')">Scissors</button>
        <div id="result"></div>
        <br>
        <br>
        <button onClick="test()">DEBUG</button>
    </div>
    

    var user;
    function choose(choice){
        user = choice;
    }
    
    function test(click){
        alert("You chose " + user);
    }                         
    

    【讨论】:

    • 这个对我帮助很大。我发现了一个错误。 :)
    【解决方案2】:

    也许试试这个.. 更清晰的标记.. 使用 jQuery

    <div id="game">
        <button class="user" data-name="rock">Rock</button>
        <button class="user" data-name="paper">Paper</button>
        <button class="user" data-name="scissors">Scissors</button>
        <div id="result"></div>
        <br>
        <br>
        <button id="test">DEBUG</button>
    </div>
    
    
    $(document).ready(function() {
        var user = "none";
        $(".user").click(function() {
           user = $(this).attr("data-name");
        });
    
        $("#test").click(function() {
           alert(user);
        });
    });
    

    http://jsfiddle.net/rQDbe/

    【讨论】:

    • 谢谢。我还不想使用jQuery。我现在正在学习javascript,之后我想学习jQuerry。 :)
    • 很高兴知道这一点 :) 你应该在使用库之前学习 JavaScript。
    【解决方案3】:

    选择应该包含在引号中,javascript 正在寻找名为 paper 等的变量。

    <button onClick="user(rock)">Rock</button>
    <button onClick="user(paper)">Paper</button>
    <button onClick="user(scissors)">Scissors</button>
    

    【讨论】:

      【解决方案4】:

      其他答案正在解决一些问题。当您将rock 作为变量传递时,调用函数的方式也存在问题,您需要使用字符串:

      <button onClick="user('rock')">Rock</button>
      

      除非你在某处声明了变量,但它没有显示在你的代码中。

      【讨论】:

      • 我解决了这个问题。现在就像你说的那样:&lt;button onClick="user("rock")"&gt;Rock&lt;/button&gt; &lt;button onClick="user("paper")"&gt;Paper&lt;/button&gt; &lt;button onClick="user("scissors")"&gt;Scissors&lt;/button&gt;
      • 属性中的字符串不要使用双引号,否则将不起作用
      • 啊,这就是问题所在。谢谢!
      【解决方案5】:

      似乎是范围界定问题。尝试删除函数内的 var。

      【讨论】:

        【解决方案6】:

        在函数范围内使用的var关键字将声明一个新的局部变量。

        因此,在全局范围内,user 保留值 "none"

        【讨论】:

          【解决方案7】:

          一个问题:

          var user = "none";
          function user(choice){
              var user = choice;
          }
          

          用户的一个变量隐藏了用户的另一个变量。

          同时拥有同名的函数和变量是个坏主意。

          【讨论】:

            【解决方案8】:

            var 用于声明变量。您不需要在user 函数中再次声明user 变量。您只需为声明的值分配一个值。

            var user; //declaration
            function user(choice) {
                user = choice; //assignment
            }
            

            【讨论】:

            • 我按照您输入的方式进行操作,但调试按钮仍然显示“无”。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-05-31
            • 2011-12-11
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多