2012-11-30 143 views
0

我有一個網頁上的幾個腳本,我遍歷它們,找出哪些是廣告調用(包含特定的字符串),然後解析這些腳本標籤來抓取一些來自這些腳本標記的url參數。返回一個對象返回undefined在第二次迭代

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']); 

在函數內部,在兩個處決變量設置並分配到一個對象,用於解析功能的外部。在函數之外,在第二次執行時,變量返回爲undefined。

下面是運行腳本的頁面調用: WebPage

你可以看到使用Firebug控制檯輸出。任何人都可以解釋爲什麼會發生?

+0

您在每次迭代時都用新值覆蓋對象鍵。您需要另一個鍵/屬性來存儲更多值。 – adeneo

回答

1

替換您如下一行:

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

這一個:

scripts.each(function(v,u) { 

當你的scripts變量已經包含了一個jQuery對象。

+0

感謝這個信息。 – AGDM

2

你是存儲在同一個adObject財產所有結果。當你循環最新的一個覆蓋其他人。

相反adObject [ 'cmn_unit']的,例如使用adObject [V]:

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

另外,jQuery的(腳本)確實應該腳本(雖然它是不是一個錯誤,只是效率不高)。

+0

感謝這個幫助。 – AGDM