Mik*_*ike 2 javascript ajax jquery
在回调函数之外使用全局变量最好的是什么?
var icon;
$(function(){
$.get('data.xml', function(xml){
icon = xml.documentElement.getElementsByTagName("icon");
//this outputs a value
console.log(icon);
});
//this is null
//How can this maintain the value set above?
console.log(icon);
});
Run Code Online (Sandbox Code Playgroud)
您提供的代码完全有效 - 事实上,icon 它确实 "维持"它的价值.问题很可能是get()异步运行 - 仅在 'data.xml'从服务器完全加载后调用匿名函数.所以现实世界的执行顺序看起来像这样:
get('data.xml', function(xml){...}) (开始加载data.xml)console.log(icon)(此时icon仍为null)icon = xml.documentElement.getElementsByTagName("icon").如果你想要做一些事情的价值icon,之后的"data.xml中"已被提取,那么你需要做的是内部匿名回调函数.像这样:
var icon;
$(function(){
$.get('data.xml', function(xml){
icon = xml.documentElement.getElementsByTagName("icon");
console.log(icon);
});
});
Run Code Online (Sandbox Code Playgroud)
祝好运!
注意:您仍然可以使用匿名函数之外的icon代码,但是您需要等待访问它,直到运行匿名函数之后.执行此操作的最佳方法是将相关代码放入其自己的函数中,然后从回调函数中调用该函数:
var icon;
$(function(){
$.get('data.xml', function(xml){
icon = xml.documentElement.getElementsByTagName("icon");
loadIcon();
});
function loadIcon() {
console.log(icon);
// ... do whatever you need to do with icon here
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9239 次 |
| 最近记录: |