首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从多个嵌套函数中提取变量

从多个嵌套函数中提取变量
EN

Stack Overflow用户
提问于 2013-03-25 18:48:17
回答 2查看 179关注 0票数 0

我试图从多个嵌套函数中获取变量(lib)

代码语言:javascript
运行
复制
var nme='name',lib;

$('script').each(function(){

    var src=$(this).attr('src');

    if(typeof(src)==='undefined'){src='';}

if(src.indexOf(nme)!==-1){

    $.get($(this).attr('src').match(/\w([^ ]+)spbin/)[0]+'/conf/ptmedia.plist',
        function(c){
            $(c).find('key').each(function(){
                if($(this).html()==='MediaLib'){lib=$(this).next().html();}
            });
        }
    );

}
});

if(lib==='some lib'){DO STUFF}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-25 20:34:30

我解决了这个问题如下:

代码语言:javascript
运行
复制
var nme='name';

    $('script').each(function(){

    var src=$(this).attr('src');

        if(typeof(src)==='undefined'){src='';}

        if(src.indexOf(nme)!==-1){media=$(this).attr('src').match(/\w([^ ]+)spbin/)[0];}

    });


    function ffn(){
    $($.ajax({url:media+'/conf/ptmedia.plist',async:false}).responseText).find('key').each(function(){
        if($(this).html()==='string'){value=$(this).next().html();}
    });

    return value;
    }

    if(ffn()==='some lib'){DO STUFF}

感谢大家的参与和好主意!

票数 0
EN

Stack Overflow用户

发布于 2013-03-25 18:49:58

您的问题不是作用域问题,问题是您有一个异步的AJAX调用。您应该将.null中的HTML更改放在回调函数中,而不是:

代码语言:javascript
运行
复制
$.get($(this).attr('src').match(/\w([^ ]+)spbin/)[0]+'/conf/ptmedia.plist',
        function(c){
            $(c).find('key').each(function(){
                if($(this).html()==='MediaLib'){lib=$(this).next().html();}

                $('.null').html(lib);
            });
        }
});

在JavaScript中,IO通常是异步的。这意味着,当您进行AJAX调用时,它并不是一成不变的,而是等待从HTTP请求返回的值,然后调用回调。在function(c)是回调的情况下,它会在AJAX调用的值到达时执行。

实际上,您正在将HTML内容的.null更新为未定义的,因为它在更新之前得到了lib的值。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15622433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档