单击函数不更新全局变量

时间:2017-02-18 18:20:13

标签: javascript jquery

我想在用户点击按钮时更改全局变量public static function boot() { parent::boot(); self::creating(function($model){ // ... code here }); } 。但是,它没有被改变。我在Google上研究过这个问题,看起来我做的一切都很正确。

testing.html:

x

tesing.js:

<!DOCTYPE html>
<html>  
<head>
    <title>Testing</title>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
    <script type="text/javascript" src="testing.js"></script>
    <style>
        div {
            border: solid 1px orange;
            height: 50px;
            width: 50px;
            font-size: 45px;
            text-align: center;
        }
    </style>
</head>
<body>
    <button>Click here</button>
    <div><div/>
</body>
</html>

如果我在var x; $(document).ready(function() { x = 0; $("div").text(x); $("button").on("click", function() { x = 1; }); $("div").text(x); //the div stays at "0" even after I click the button }); 之后将$("div").text(x);置于点击功能中,那么它可以正常工作,但是我需要它来更改全局范围内的x = 1,而不是本地范围,所以我可以在html文件中的其他JS函数中使用它。

修改 我试图在click函数之外测试x的原因是因为我需要在html文件中的文档就绪函数中使用更新的x,所以我不能做所有事情在点击功能内。也许我想要做的是不可能的?但我认为这就是为什么存在全局变量?

1 个答案:

答案 0 :(得分:1)

您必须更新点击处理程序中的HTML。 $("div").text(x);x的值指定为$("div")的文本,它不会将文本绑定到该变量,因此必须在更新变量值时更新文本。 / p>

var x = 0;
$("div").text(x);
$("button").on("click", function() {
    $("div").text(++x);
});
div {
    border: solid 1px orange;
    padding: 10px 15px;
    display: inline-block;
    font-size: 45px;
    text-align: center;
}
div::before {
    content: "x = ";
}
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<button>Increment</button><br>
<div></div>