0

我试图在他们的交易部分中回应每笔交易的所有标题。我猜 for 语句是正确的,而且我有点不知道如何循环打印语句以遍历所有标题。但我只是不确定如何?

我的代码:

$(document).ready(function() {
    $.ajax({
        url: 'https://api.groupon.com/v2/deals.json?client_id={accesstoken}&division_id=new-york',
        data: 'client_id='+ access_token + '&' + 'division_id'+ loc,
        dataType: 'jsonp',
        success: function (data) {
            items = data;
            // title = data.deals[0].shortAnnouncementTitle;
            console.log(items)
            handleResult(items)
            // handleResult(title)
        },
    });

    function handleResult(items) {
        for(var i=0; i<items.deals.length; i++) {
            var title = items.deals[i].shortAnnouncementTitle;
            s = "<h2 class='results'>" + title + "</h2>";
            console.log(title)
        }

        $("#result").html(s);
    } 

目前它循环并仅打印出列表中的最后一项,而在控制台中我看到了每个标题。

4

1 回答 1

1

这些都应该有效,您在每次迭代中都覆盖了 s 的值,您试图构建一个更大的字符串但错过了加号:

    function handleResult(items) {
    var s = "";
    for(var i=0; i<items.deals.length; i++) {
        var title = items.deals[i].shortAnnouncementTitle;
        s += "<h2 class='results'>" + title + "</h2>";
        //or s = s+ ....   
        console.log(title)
    }

    $("#result").html(s);
} 

你也应该在使用之前使用 var 声明变量 's' 否则你将设置全局 's' 属性,或者类似的东西,如果在没有 var 的情况下使用 s ,这将创建有趣的人工制品 :-)

    function handleResult(items) {
    for(var i=0; i<items.deals.length; i++) {
        var title = items.deals[i].shortAnnouncementTitle;
        var s = $("<h2 class='results'></h2>").text(title);
        $("#result").append(s);
        console.log(title)
    }
} 

以上将是我的首选解决方案,因为它可以让您更好地控制每个元素并提供一些灵活性。我想我上面写的很对。

希望有帮助。马特

于 2012-10-01T16:16:42.497 回答