在each()后运行jQuery函数
Run function after each() jQuery
我知道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);
}
});
}
基本上,如果它在结果的第一页上没有找到所需的链接,它应该转到下一页。我有一个工作小提琴,只是在这里的第一页:http://jsfiddle.net/p8DY3/1/那么我如何才能让searchGoogle()运行,直到它找到它要找的东西?也许在谷歌API中有更好的方法,我不知道?抱歉,如果我的问题是业余的,我一个月前才开始自己学习JavaScript。
首先,你应该确保你没有达到谷歌的某种速率限制。查看您的Network选项卡,看看请求是否正确返回。
我看到的第一个问题是糟糕的数学。
var currentPage = $('#currentPage').val();
是字符串
这里var nextPage = CurrentPage + 1;
你把它当作一个数字。
你得先把字符串转换成数字再加。您正在进行字符串连接!
var nextPage = parseInt(CurrentPage,10) + 1;
吹毛求疵
不要在输入中存储东西。使用变量,会让事情进行得更快。DOM查找/操作很慢。
为什么要重新发明addClass和val()
$('.resultLink:last').attr('class', 'yourLink');
$('#currentPage').attr('value', nextPage);
应该$('.resultLink:last').addClass('yourLink');
$('#currentPage').val(nextPage);
你为什么又在抓搜索词和网址?你已经把它们传递给函数了吗?
终于轮到你了
searchGoogle(searchTerms, nextPage); <-- What are you missing here?
function searchGoogle(searchTerms, pageNumber, websiteURL) { <--what it is expecting
你传递了2个东西,而它需要3个。
相关文章:
- 对动态创建的元素运行jQuery.ech()
- 如何在加载角度函数后运行jQuery代码
- 在AJAX jQuery加载()之后运行jQuery代码
- 如何仅在设备基于 iOS 时运行 jQuery 代码
- 使用 .on 函数运行 jQuery 声明函数
- html代码没有运行jquery问题
- 仅在尚未运行jQuery UI的情况下运行动画
- 在运行jquery之前从5开始倒计时
- 在不重新运行jquery验证的情况下检查表单是否有效
- 在Angular App中运行jQuery函数
- 一旦设置了PHP查询字符串,如何运行jQuery脚本
- 如何在Ember中更改模板时运行JQuery代码
- 如果URL包含字符串don't运行jQuery函数
- 在php之前运行jQuery脚本
- 无法动态地将 jquery 添加到头部并运行 jquery 代码
- 在 HTML 中运行 jquery 脚本
- 如何在控制器外部和视图内在 AngularJs 中运行 jQuery
- 在具有相同类的每个表上运行 jquery
- 在 Angular 完成渲染后运行 JQuery 代码
- 如何选择当前 DIV ID 以使用该 ID 运行 Jquery