为什么我的for循环在这里是无限的

时间:2016-09-23 08:06:44

标签: javascript jquery arrays

下面是维基百科搜索项目的js代码。即使它有条件停止重复循环,我也会获得无限循环。我陷入了这个问题。

$(document).ready(function() {
    $('.enter').click(function() {
        var srcv = $('#search').val(); //variable get the input value
        //statement to check empty input
        if (srcv == "") {
            alert("enter something to search");
        }
        else {
            $.getJSON('https://en.wikipedia.org/w/api.php?action=opensearch&search=' + srcv + '&format=json&limit=20&callback=?', function(json) {

                $('.content').html("<p> <a href ='" + json[3][0] + "'target='_blank'>" + json[1][0] + "</a><br>" + json[2][0] + "</p>");

                /*for loop to display the content of the json object*/

                for (i = 1; i < 20; i++) {
                    $('p').append("<p><a href ='" + json[3][i] + "'target='_blank'>" + json[1][i] + "</a>" + json[2][i] + "</p>");

                }
            });
        }
    });
});

3 个答案:

答案 0 :(得分:3)

您将附加到页面中<p>的每一个。

由于你的for循环追加了更多<p>(并且你的页面中可能有大量的<p>元素),你会溢出你的调用堆栈。

您可能想要附加到特定的<p>。尝试给你的选择器一个id。

答案 1 :(得分:0)

我可以在网址中看到您需要执行以下操作:

遍历找到的术语并根据元素的索引选择链接,选择单个元素.content来追加数据而不是一组元素p,这样会增加数量重复的结果

  $.getJSON('https://en.wikipedia.org/w/api.php?action=opensearch&search='+srcv+'&format=json&limit=20&callback=?', function(json){
        $.each(json[1],function(i,v){
              $('.content').append("<p><a href ='"+json[2][i]+"'target='_blank'>"+json[0]+"</a>"+v+"</p>");

        });
 });

请参阅演示:https://jsfiddle.net/x79zzp5a/

答案 2 :(得分:-2)

试试这个

$(document).ready(function() {
$('.enter').click(function() {
    var srcv = $('#search').val(); //variable get the input value
    //statement to check empty input
    if (srcv == "") {
        alert("enter something to search");
    }
    else {
        $.getJSON('https://en.wikipedia.org/w/api.php?action=opensearch&search=' + srcv + '&format=json&limit=20&callback=?', function(json) {

            $('.content').html("<p> <a href ='" + json[3][0] + "'target='_blank'>" + json[1][0] + "</a><br>" + json[2][0] + "</p>");

            /*for loop to display the content of the json object*/
            var i = 1;
            for (i; i < 20; i++) {
                $('p').append("<p><a href ='" + json[3][i] + "'target='_blank'>" + json[1][i] + "</a>" + json[2][i] + "</p>");

            }
        });
    }
});
});