0

私はそれが彼らの取引セクションで出くわすすべての取引のすべてのタイトルをエコーアウトしようとしています。forステートメントは中途半端に正しいと思います。また、すべてのタイトルを実行するためにprintステートメントをループしないようにしています。しかし、私はどうやってかわからないのですか?

私のコード:

$(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'プロパティ、またはそれらの行に沿った何かを設定することになります。

    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 に答える