0

Web ページにいくつかのスクリプトがあり、それらを反復処理して、広告呼び出し (特定の文字列を含む) を特定し、それらのスクリプト タグを解析して、それらのスクリプト タグからいくつかの 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']);

関数の内部では、両方の実行で変数が設定され、関数の外部で解析するためにオブジェクトに割り当てられます。関数の外では、2 回目の実行時に変数が未定義として返されます。

スクリプトの実行を呼び出すページは次のとおりです: WebPage

Firebug を使用して、コンソールで出力を確認できます。なぜこれが起こっているのか誰でも説明できますか?

4

2 に答える 2

2

すべての結果を同じ adObject プロパティに保存しています。ループすると、最新のものが他のものを上書きします。

adObject['cmn_unit'] の代わりに、たとえば adObject[v] を使用します。

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

また、jQuery(scripts) は実際にはスクリプトである必要があります (ただし、エラーではありませんが、非効率的です)。

于 2012-11-30T22:15:23.743 に答える
1

次の行を置き換えます。

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

これについて:

scripts.each(function(v,u) {

scripts変数にはすでに jquery オブジェクトが含まれているためです。

于 2012-11-30T22:06:31.183 に答える