我有一个名为allow
的变量,我希望它是全局的,所以任何其他函数都可以使用它。当我从某个函数调用变量时,它会返回undefined
。
这是我的代码:
var allow = null;
$('#form').submit(function(e) {
error_found = false;
$('#text').click();
console.log(window.allow);
if(window.allow == false) {
alert('מספר הסדר שהוזן הינו בשימוש, נא בחר מספר אחר, או סדר את רשימת הסדר מחדש.');
$("#order").focus();
e.preventDefault();
error_found = true;
}
if($("#fix_rel").val() == "" && !error_found){
alert('נא בחר זמן יחסי או קבוע.');
$("#fix_rel").focus();
e.preventDefault();
}
if($("#fix_rel option:selected").val()=="rel" && !error_found){
if(!$.isNumeric($("#order").val())){
alert('מספר הסדר חייב להיות מספר!');
$("#order").focus();
e.preventDefault();
}
}
});
$('#text').click(function() {
table = $("#table").val();
order = $("#order").val();
$.post('test.php',{table:table,order:order}).done(function(data) {
if(data == "true") {
window.allow = true;
}
if(data == "false") {
window.allow = false;
}
console.log(window.allow);
});
});
过去2个小时我一直试图解决这个问题,到目前为止,我没有任何线索。
提前致谢!
答案 0 :(得分:3)
如果你这样做:
var allow = null;
console.log(window.allow);
并且您在控制台中看不到null
,那么唯一可能的解释是您的allow
定义不是全局变量,因为存在某种外部函数(例如{ {1}}功能或类似的东西。
如果两个语句之间存在干预代码,那么另外一种可能是其他代码正在改变$(document).ready()
变量的值。
在变量声明前使用allow
时,它会在当前作用域中定义该变量。如果当前范围是全局的,则该变量是全局变量。如果当前作用域位于函数内部,则该变量被定义为该函数的局部变量。
您可以根据您要完成的任务以两种方式解决您的问题。
var
为您的变量分配初始值,否则不会声明它。无论你把这个陈述放在哪里,这都会使它成为全球性的。window.allow = null
引用,而不是allow
时使用它。答案 1 :(得分:1)
仅使用allow
代替window.allow
。
像:
console.log(window);
而不是
console.log(window.allow);