Javascript 在每个()jQuery之后运行函数

Javascript 在每个()jQuery之后运行函数,javascript,jquery,Javascript,Jquery,我知道jQuery中的each()是同步的,但它的行为似乎不是这样的。当我这样做时: $('#findRankBtn').click(function () { var websiteURL = $('#websiteURL').val(); var searchTerms = $('#searchTerm').val(); var pageNumber = $('#currentPage').val

我知道jQuery中的each()是同步的,但它的行为似乎不是这样的。当我这样做时:

         $('#findRankBtn').click(function () {
             var websiteURL = $('#websiteURL').val();
             var searchTerms = $('#searchTerm').val();
             var pageNumber = $('#currentPage').val();

             //INSERTS A + FOR EVERY SPACE
             var searchTerms = searchTerms.replace(" ", "+");

             searchGoogle(searchTerms, pageNumber, websiteURL);



         });


         function searchGoogle(searchTerms, pageNumber, websiteURL) {
             $.getJSON("https://www.googleapis.com/customsearch/v1?key=AIzaSyDPuIrijE0IQ6330vMLN2p-L_4J6y_G60c&cx=013036536707430787589:_pqjad5hr1a&q=" + searchTerms + "&alt=json&start=" + pageNumber,

             function (recievedData) {
                 //console.log(recievedData);
                 $.each(recievedData.items, function (i, item) {
                     $('#resultsDiv').append('<p class="resultLink">' + item.link + '</p>');
                     var linkAddress = $('.resultLink:last').text();
                     if (linkAddress.indexOf(websiteURL) !== -1) {
                         alert('found');
                         $('.resultLink:last').attr('class', 'yourLink');
                         $('#ifFound').attr('value', 'true');

                     }
                 });


                 var ifFound = $('#ifFound').val();
                 var currentPage = $('#currentPage').val();
                 var nextPage = CurrentPage + 1;
                 if (ifFound == 'false') {
                     //INCREMENT PAGE
                     $('#currentPage').attr('value', nextPage);

                     //GRAB DATA AGAIN
                     var websiteURL = $('#websiteURL').val();
                     var searchTerms = $('#searchTerm').val();
                     //INSERTS A + FOR EVERY SPACE
                     var searchTerms = searchTerms.replace(" ", "+");
                     //SEARCH GOOGLE
                     searchGoogle(searchTerms, nextPage);
                 }


             });
         }
$('findRankBtn')。单击(函数(){
var websiteURL=$('#websiteURL').val();
var searchTerms=$('#searchTerm').val();
var pageNumber=$('#currentPage').val();
//为每个空格插入+号
var searchTerms=searchTerms.replace(“,“+”);
searchGoogle(搜索词、页码、网站URL);
});
功能searchGoogle(搜索词、页码、网站URL){
$.getJSON(“https://www.googleapis.com/customsearch/v1?key=AIzaSyDPuIrijE0IQ6330vMLN2p-L_4J6y_G60c&cx=013036536707430787589:_pqjad5hr1a&q=“+searchTerms+”&alt=json&start=“+pageNumber,
函数(接收数据){
//console.log(receiveddata);
$.each(receiveddata.items,function(i,item){
$(“#resultsDiv”).append(“

”+item.link+”

”); var linkAddress=$('.resultLink:last').text(); 如果(linkAddress.indexOf(websiteURL)!=-1){ 警报(“发现”); $('.resultLink:last').attr('class','yourLink'); $('iffind').attr('value','true'); } }); var ifFound=$('#ifFound').val(); var currentPage=$('#currentPage').val(); var nextPage=CurrentPage+1; 如果(ifFound=='false'){ //增量页 $('currentPage').attr('value',下一页); //再次抓取数据 var websiteURL=$('#websiteURL').val(); var searchTerms=$('#searchTerm').val(); //为每个空格插入+号 var searchTerms=searchTerms.replace(“,“+”); //搜索谷歌 searchGoogle(searchTerms,下一页); } }); }
基本上,如果它在结果的第一页上没有找到所需的链接,它应该转到下一页。我有一把小提琴,只在这里的第一页: 那么,如何让searchGoogle()运行,直到它找到它要查找的内容? 也许有一个更好的方法,那就是在谷歌API中,我不知道?
抱歉,如果我的问题是业余的,我一个月前才开始自学JavaScript

首先,你应该确保你没有达到谷歌的某种利率限制。查看网络选项卡以查看请求是否正确返回

我看到的第一个问题是糟糕的数学

var
currentPage=$('#currentPage').val()是一个字符串

此处
var nextPage=CurrentPage+1您将其视为一个数字

在添加之前,必须将字符串转换为数字。您正在执行字符串连接

var nextPage = parseInt(CurrentPage,10) + 1;
挑剔

不要在输入中存储东西。使用变量,它将使事情进行得更快。DOM查找/操作速度很慢

为什么要重新设计addClass和val()

应该是

$('.resultLink:last').addClass('yourLink');
$('#currentPage').val(nextPage);
为什么你要再次抓取搜索词和网站url?您已经将它们传递到函数中了吗

最后你的问题解决了


searchGoogle(searchTerms,下一页);那么,实际问题是什么?是否在
$之后的代码。each()
$之前执行。each()
完成迭代?如果找到链接,则运行此
$('iffind')。attr('value','true')
,在运行每个之后,它应该
$('#iffind').val()searchGoogle()
,但它不知道有这么多很酷的东西,现在正在修复我的代码。
$('.resultLink:last').addClass('yourLink');
$('#currentPage').val(nextPage);
searchGoogle(searchTerms, nextPage);  <-- What are you missing here?
function searchGoogle(searchTerms, pageNumber, websiteURL) {  <--what it is expecting