0

我正在尝试使用 Apple 搜索 API 来收集两个应用程序的名称并用它替换原始 iTunes 链接。但我的代码似乎只用应用程序名称一个接一个地替换第二个 iTunes 链接。我觉得这与回调有关,但我是菜鸟……所以有人可以帮助我。

这是我的代码:

<div class = "appinfo">https://itunes.apple.com/us/app/rock-runners/id575506874?mt=8></div>

<div class = "appinfo">https://itunes.apple.com/en/app/anomaly-warzone-earth-hd/id431607423?mt=8</div>

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script>

<script>
    window.onload = function injectAppInfoBlocks()
    {
        this.appInfoBlocks = document.getElementsByClassName('appinfo');


        if(appInfoBlocks) {
            for(var i=0; i<appInfoBlocks.length; i++) {
                currentAppId = appInfoBlocks[i].innerHTML.match(/id(\d+)/)[1];
                this.currentBlockId = i;
                var self = this;

                $.ajax( "https://itunes.apple.com/lookup?id=" + currentAppId, { 
                       dataType: "jsonp",
                       context: self,
                       success: function () {
                        name = arguments[0].results[0].trackName;
                        self.appInfoBlocks[self.currentBlockId].innerHTML=name;

                       }
                });
            }
        }

    }
</script>

不使用自我:

<div class = "appinfo">https://itunes.apple.com/us/app/rock-runners/id575506874?mt=8></div>

<div class = "appinfo">https://itunes.apple.com/en/app/anomaly-warzone-earth-hd/id431607423?mt=8</div>

<script type="text/javascript" src="http://code.jquery.com/jquery-latest.pack.js"></script>

<script>
    window.onload = function injectAppInfoBlocks()
    {
        appInfoBlocks = document.getElementsByClassName('appinfo');


        if(appInfoBlocks) {
            for(var i=0; i<appInfoBlocks.length; i++) {
                currentAppId = appInfoBlocks[i].innerHTML.match(/id(\d+)/)[1];
                currentBlockId = i;

                $.ajax( "https://itunes.apple.com/lookup?id=" + currentAppId, { 
                       dataType: "jsonp",
                       success: function () {
                        name = arguments[0].results[0].trackName;
                        appInfoBlocks[currentBlockId].innerHTML=name;

                       }
                });
            }
        }

    }
</script>

我也有一种感觉,我不应该使用 currentBlockID 将“i”传递给回调函数,但是......我不知道该怎么做。

提前致谢!

4

0 回答 0