jquery在点击时永久更改变量

时间:2015-11-12 23:57:48

标签: javascript jquery

这似乎不像我期望的那样工作:

$("#thing").click(function(aVar) { 
   //run aFunc();
   aVar = "test";
   alert(aVar)
   return aVar;
});

if(typeof aVar === "undefined") { 
   $("#gniht").html("still undefined");
}     

每次点击,该功能都会运行,警报会显示" test",但aVar仍未定义(即#gniht不会填充aVar"#34;测试"。)

我希望能够点击按钮并存储值" test"到aVar然后在按钮功能范围之外使用aVar。我该怎么做?

编辑:http://jsfiddle.net/5xsthbxy/10/

2 个答案:

答案 0 :(得分:1)

aVar非常简单,因为您从未定义它(在您发布的代码中)。在开头添加:

var avar = 'Some value';

http://jsfiddle.net/daCrosby/chcuemo0/

要详细了解您的代码段,请为我添加一些注释:

var aVar = 'some value';   // Declare the variable

$("#thing").click(function (aVar) {
    //aFunc();       // I removed this from my jsFiddle because it's not defined here so it breaks the program.
    aVar = "test"; // modify the variable
    alert(aVar); // announce the variable
    return aVar; // This sends the variable back to the click handler, doing nothing useful in this snippet.
});

// Here you check to see if the variable is undefined
// If it is undefined, you try to use it - this breaks the program
if (typeof aVar === "undefined") {
    $("#gniht").html(aVar);
}

要修改click事件中的变量并在其他地方使用它,您只需在将其设置到其中之前将其定义在click函数的范围之外。例如:

var aVar = 'some value';

$("#thing").click(function () {
    aVar = "test";
});

$("#thing2").click(function () {
    $("#print").html(aVar);
});

http://jsfiddle.net/daCrosby/chcuemo0/1/

如果由于某种原因必须在点击事件之前未定义,则可以使用window.将其附加到全局范围。

$("#thing").click(function () {
    window.aVar = "test";
});

$("#thing2").click(function () {
    $("#print").html(aVar);
});

http://jsfiddle.net/daCrosby/chcuemo0/2/

答案 1 :(得分:1)

现有实施问题:

以下功能仅执行一次。即,在页面加载期间,它检查aVar是否未定义。

if(typeof aVar === "undefined") { 
   $("#gniht").html(aVar);
} 

单击该按钮时,aVar的值将设置为' test'。但是,此新的更新值未在实现中的任何位置使用。

$("#thing").click(function(aVar) { 
   aVar = "test";
   alert(aVar);
});

可能的修复方法:

以下代码将在按钮的click函数内更新本地声明的aVar,并将gniht的html设置在该范围之外。

$("#thing").click(function() { 
   aVar = "test";
   alert(aVar);
   GetValue();
});

function GetValue()
{
    if(typeof aVar === "undefined") 
       $("#gniht").html("still undefined");
    else
        $("#gniht").html(aVar);
}

GetValue();

工作示例:http://jsfiddle.net/5xsthbxy/11/