javascript - 返回对象在第二次迭代时返回未定义

标签 javascript jquery parsing object ads

我在网页上有几个脚本,我正在迭代它们,找出哪些是广告调用(包含特定字符串),然后解析这些脚本标记以从这些脚本标记中获取一些 url 参数。

var cmunt_uniqueId, cmnunt_kw;

var scripts = jQuery('script');
var adObject = {};

jQuery(scripts).each(function(v,u) {

    if ((jQuery(u).attr('src') !== undefined) && (jQuery(u).attr('src').indexOf('cmnUNTmob-20121130.js') > -1)) {

    console.log('script.src[' + v + ']="' + jQuery(u).attr('src') + '"');

        var adCall = jQuery(u).attr('src');

        // console.log(adCall);

        var pubtag = adCall;
        var newtag = pubtag.replace(/^[^\?]+\??/, '');
        var parts = newtag.split('&');
        var part1 = parts[0].split('=');
        var part2 = parts[1].split('=');
        var cmn_site_unit = part1[1].split('/');
        var cmn_site = cmn_site_unit[0];
        var cmn_unit = cmn_site_unit[1];
        cmnunt_kw = part2[1];
        var cmunt_uniqueId = getCookie('__utma');


    adObject['cmn_unit'] = cmn_unit;
    adObject['cmn_site'] = cmn_site;

    console.log('inside function');
    console.log(adObject['cmn_site']);
    console.log(adObject['cmn_unit']);

    return adObject;
    }
});


console.log('outside function');   
console.log(adObject['cmn_site']);
console.log(adObject['cmn_unit']);

在函数内部,在两次执行中,变量都被设置并分配给一个对象,以便在函数外部进行解析。在函数外部,第二次执行时变量将返回为未定义。

这是调用运行脚本的页面: WebPage

您可以使用 Firebug 在控制台中查看输出。谁能解释一下为什么会发生这种情况?

最佳答案

您将所有结果存储在同一个 adObject 属性中。当您循环时,最新的一个会覆盖其他的。

使用 adObject[v] 代替 adObject['cmn_unit']:

adObject[v] = {
    cmn_unit:cmn_unit,
    cmn_site:cmn_site
};

此外,jQuery(scripts) 确实应该是脚本(虽然这不是错误,只是效率低下)。

关于javascript - 返回对象在第二次迭代时返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13653828/

相关文章:

c# - 日志解析器 2.2 查询、文本解析和验证

javascript - 在 WordPress 页面中运行内联 jQuery 脚本是否可行?

javascript - 如何在没有 xhr 的情况下在 ajax 中编写代码

javascript - 当用户单击链接时,如何在转到其他页面之前滚动到顶部?

javascript - 在 bootstrap-duallistbox 中单击鼠标即可移动项目

javascript - 将包含变量名称的类似数组的字符串解析为数组

java - Android NoSuchElementException 和扫描仪

c# - 使 Javascript 代码在 Page Start 上运行

javascript - vis.js 时间线项目在错误的位置

javascript - 将事件处理程序动态添加到也是动态生成的 href