【问题标题】:Trying to change the value of a global variable试图改变全局变量的值
【发布时间】:2016-06-04 02:38:48
【问题描述】:

我有这段代码试图改变全局变量ipad

$(document).ready(function() {
    "use strict";
    var ipad=0;
    var android=0;
    var windows=0;

    $("#ipad").click(function() {
        ipad=10;
        android=0;
        windows=0;
        $("#ipad").css('background-color','#C30');
        $("#android").css('background-color','#0C0');
        $("#windows").css('background-color','#0C0');
        $("#not_important").css('background-color','#0C0');
    });

    document.getElementById("res").innerHTML = ipad;
});

但是当我点击ipad 按钮时,我无法得到想要的结果(10)。谁能告诉我,请告诉我哪里出错了? 谢谢。

【问题讨论】:

  • 顺便说一句,ipad 并不是真正的全球性。它仍然在您的 ready 函数的范围内

标签: jquery variables


【解决方案1】:

您有一个 #iPad 点击处理程序,它会更改 iPad 变量的值,但您的以下代码不在同一个处理程序中

document.getElementById("res").innerHTML = ipad;

所以你的元素“res”值将是初始值“0”,

如果您想在单击后设置此元素的值,则将该行代码也复制到单击处理程序中。

$("#ipad").click(function(){
            ipad=10;
            android=0;
            windows=0;
           $("#ipad").css('background-color','#C30');
            $("#android").css('background-color','#0C0');
           $("#windows").css('background-color','#0C0');
           $("#not_important").css('background-color','#0C0');
           document.getElementById("res").innerHTML = ipad;
    });

这里是 Jsfiddle example

希望这会有所帮助!

【讨论】:

  • 谢谢,但我希望 ipad var 保持全局,因为我想稍后将此值添加到另一个值。我怎样才能解决这个问题?还有其他帮助吗?
【解决方案2】:

这一行:

document.getElementById("res").innerHTML = ipad;

在文档准备好时运行,在您单击 ipad 按钮之前,即:单击处理程序尚未运行(单击按钮时它将运行),所以 ipad 变量,在您设置为res的html内容,还是0。

一个简单的解决方案是将该行放在处理程序中。

【讨论】:

  • 谢谢,但我希望 ipad var 保持全局,因为我想稍后将此值添加到另一个值。我怎样才能解决这个问题?还有其他帮助吗?
  • ipad 仍然是“全局的”(在 ready 函数的范围内),因为它是在点击处理程序之外定义的。当您知道设置了正确的值时(即:当您确定用户已经点击了#ipad)时,您只需要小心并使用该变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-28
  • 1970-01-01
相关资源
最近更新 更多