jQuery의 each()가 동 기적이라는 것을 알고 있지만 그렇게 행동하지는 않습니다. 이 작업을 수행 할 때 :each() jQuery 다음에 함수를 실행하십시오.
$('#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);
}
});
}
결과의 첫 번째 페이지에서 원하는 링크를 찾지 못하면 기본적으로 다음 페이지로 이동해야합니다. 여기 첫 페이지에 대한 간단한 피델을 가지고 있습니다 : http://jsfiddle.net/p8DY3/1/ 그래서 내가 찾고있는 것을 찾을 때까지 searchGoogle()을 실행할 수 있습니까? 아마도 Google API에 대해 잘 모르는 더 좋은 방법이있을 것입니다. 죄송합니다. 내 질문에 아마추어라면 한달 전에 나만의 JavaScript를 배우기 시작했습니다.
그래서 실제 문제가 무엇인가를 원할 때 당신은 2 일에 전달하는? '$ .each()'가 반복되기 전에'.each()'가 실행 된 후에 코드가 실행됩니까? –
각 링크를 실행 한 후, $ ('# ifFound') .val()을 실행해야합니다.이 링크는'$ ('# ifFound'). attr ('value', ' ;'여전히 false라면'searchGoogle()'을 다시 실행해야하지만 dox't do는 실행되지 않습니다. – user2137087