2014-08-31 38 views
0

我有一个全局变量,通过document.ready()在页面加载时赋值,但是当我从事件方法访问它时,它变为空。javascript全局变量在使用后变为空

因此,为了检查变量是否被赋值,我在赋值后立即添加了一个alert(variable.length),它显示了期望值,但是当我在事件触发方法中做同样的事情时,值是始终为0

这是我做了什么

的document.ready()

var selectedCategory = new Array(); 
    $(document).ready(function() { 
     selectedCategory = $("#<%=hfdGenreList.ClientID%>").val().split(','); 
     alert(selectedCategory.length); 
    }); 

强大的文本

function moveToTextbox() { 
     alert(selectedCategory.length); 
     // some code 
    } 
+0

你能提供的jsfiddle? – Grundy 2014-08-31 08:25:36

+0

适合我:http://jsfiddle.net/u2o81d7w/ – Rhumborl 2014-08-31 08:36:13

回答

2

删除 “VAR” 语法来创建一个全局变量,或者是明确有关创建一个全局变量从窗口objetc挂,所以:

方案1(删除 '变种'):

selectedCategory = new Array(); 
$(document).ready(function() { 
    selectedCategory = $("#<%=hfdGenreList.ClientID%>").val().split(','); 
    alert(selectedCategory.length); 
}); 

方案2(明确的全球从窗口对象VAR):

var window.selectedCategory = new Array(); 
$(document).ready(function() { 
    selectedCategory = $("#<%=hfdGenreList.ClientID%>").val().split(','); 
    alert(selectedCategory.length); 
}); 

function moveToTextbox() { 
     alert(window.selectedCategory.length); 
     // some code 
    }