这似乎不像我期望的那样工作:
$("#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。我该怎么做?
答案 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);
});
答案 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();