$(document).ready(function() {
var x = "";
$("#anyElement").click(function() {
x = "test";
alert(x);
});
alert(x);
});
当第一个警报有效时,消息框显示“test”。当第二个警报工作时,消息框显示“”。
$("#anyElement").click(function() {
// How can i set the x veriable as "test" here
});
答案 0 :(得分:1)
我不确定我是否明白你要求的是什么,但是,嘿,让我们避免全局,我们呢?
那就是说,我建议你试试这样的方法:
var app = {};
app.x = 'initial value';
app.bindEvents = function() {
$('#anyElement').click(function() {
app.x = 'test';
console.log(app.x);
});
};
app.bindEvents = function() {
app.bind();
};
$(app.init);
这里,我们的代码只设置一个全局对象(app
),避免污染命名空间。
你的代码中的问题是你试图设置一个" global"但是x
不是全局变量,而只是一个局部变量。
查看有效的JSFiddle here
答案 1 :(得分:0)
您的代码按预期工作,第一个警报为空,因为尚未调用单击触发器:
$(document).ready(function() {
var x = "";
$("#anyElement").click(function() {
x = "test";
alert(x);
});
alert(x);
});
答案 2 :(得分:0)
您遇到的问题是由于程序的流程。您对变量x的声明使x全局并且作用于document.ready函数。
'测试'直到click事件之后才分配给x变量,并且第一个警报实际上是代码中写入的第二个警报,因为没有与警报关联的事件。