我正在开展一个项目来检查是否在网站上更新了新项目。我希望程序检查每一秒以查看是否有新项目进入。项目由ID指定(我可以获得)。但是,我在使用AJAX更新网站部分时遇到问题。我希望它能够刷新'网站每秒钟,并将最近的项目与其先前的最新项目进行比较(即,如果当前>过去)。任何帮助将不胜感激。
<!DOCTYPE html>
<html>
<head>
<script src="jquery-2.1.1.js"></script>
</head>
<body>
<button onclick = "body()">Click Me</button>
<script>
var highest = 0;
var compare = 0;
var creator;
var newItem = false;
var HelpPeople = 'People's Names';
var elements = document.getElementsByClassName('ms-itmhover');
highest = elements[0].getElementsByClassName('ms-vb2')[1].innerText;
var body = function()
{
window.setTimeout(update(), 1000);
}
var update = function()
{
window.jquery-2('body').load('URL');
elements = document.getElementsByClassName('ms-itmhover');
compare = elements[0].getElementsByClassName('ms-vb2')[1].innerText;
creator = elements[0].getElementsByClassName('ms-vb-user')[0].innerText;
if(compare > highest && creaCompare(creator))
{
displayNew();
}
body();
}
var creaCompare = function(create)
{
var comparer = false;
for(var i = 0; i < HelpPeople.length; i++)
{
if(create == HelpPeople[i])
{
comparer = true;
}
}
return comparer;
}
var displayNew = function()
{
confirm('There is a new item');
body();
}
</script>
</body>
我想我问的问题不对。我希望在一个网站(不是我自己的)上运行它,并让它解析数据并检查新项目(AJAX)。我想知道如何使用它以及如何在这个网站上使用JS(我可以通过控制台运行它吗?)
答案 0 :(得分:0)
问题可能出在这一行:
window.jquery-2('body').load('URL');
它甚至不是有效的语法。它应该写成这样:
$('body').load('URL'); // Instead of 'URL' there also should be a proper URL
此外,您应该知道加载函数是异步的,因此如果您需要对加载的元素执行某些操作,则需要将这些操作放在回调中。 (作为load方法的第二个参数传递的函数。)
答案 1 :(得分:0)
我重写了你的代码,因为你正在使用jQuery ......但没有使用它。
<!DOCTYPE html>
<html>
<head>
<script src="jquery-2.1.1.js"></script>
</head>
<body>
<button id="btnTest">Click Me</button>
<script type="text/javascript">
// wait for document loaded
$(function () {
var updateUrl = 'put your update url here';
var highest = 0;
var compare = 0;
var creator;
var newItem = false;
var HelpPeople = 'People's Names';
var elements = $('.ms-itmhover'); // where's this element
highest = $('.ms-vb2', elements).text(); // where are those elements ????
var body = function () {
$('#btnTest").prop('disabled', true);
setTimeout(update, 1000);
};
var update = function()
{
$('body').load(updateUrl, function (response, status, xhr) {
if ( status == "error" ) {
alert("Sorry but there was an error : " + xhr.status + " " + xhr.statusText);
return;
}
elements = $('.ms-itmhover');
compare = $('.ms-vb2', elements).text();
creator = $('.ms-vb-user', elements).text();
if (compare > highest && creaCompare(creator))
{
displayNew();
}
body();
});
};
var creaCompare = function(create) {
var comparer = false;
for (var i = 0; i < HelpPeople.length; i++)
{
if(create == HelpPeople[i]) {
comparer = true;
}
}
return comparer;
};
var displayNew = function() {
confirm('There is a new item');
body();
};
// prevent button click more than once
$('#btnTest").one('click', body);
});
</script>
</body>
至于回答实际问题,没有更多的HTML,可以回答的问题并不多。但上述变化可能会解决:
jquery-2
不符合您的预期,2(..)
语法无效)setTimeout(update(), 1000);
没有做任何事情,因为它基本上做setTimeout(undefined, 1000);
这个答案的内容不涵盖: