Javascript 返回对象在第二次迭代时返回未定义的

Javascript 返回对象在第二次迭代时返回未定义的,javascript,jquery,parsing,object,ads,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) &&

我在一个网页上有几个脚本,我正在对它们进行迭代,找出哪些是广告调用(包含特定字符串),然后解析这些脚本标记,从这些脚本标记中获取一些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']);
在函数内部,在两次执行时,变量都被设置并分配给一个对象,以便在函数外部进行解析。在函数外部,在第二次执行时,变量返回为未定义

以下是运行脚本的页面调用:


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

替换以下行:

jQuery(scripts).each(function(v,u) {
对于这一个:

scripts.each(function(v,u) {

因为
脚本
变量已经包含jquery对象

替换以下行:

jQuery(scripts).each(function(v,u) {
对于这一个:

scripts.each(function(v,u) {

因为
脚本
变量已经包含jquery对象

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

例如,使用adObject[v]代替adObject['cmn_unit']:

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

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

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

例如,使用adObject[v]代替adObject['cmn_unit']:

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

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

您在每次迭代中都用一个新值覆盖对象键。您需要另一个键/属性来存储更多值。在每次迭代中,您都将用新值覆盖对象键。您需要另一个键/属性来存储更多值。