Я пытаюсь запустить javascript, который задал бы цвет фона страницы красным, подождите секунды, а затем получит значение с веб-страницы, а затем станет зеленым, а затем останется зеленым на протяжении многих секунд, прежде чем снова станет красным и будет повторяться бесконечно.
Я использую JQuery GET для получения веб-страницы.
Мой код
<script>
function g() {
document.body.bgColor = 'green';
}
function r() {
document.body.bgColor = 'red';
}
$(document).ready(function(){
while(1)
{
$.get("http://localhost:8080/t.html", function( data ){
setTimeout'g()',10000);
setTimeout('r()',data*1000);
});
}
});
</script>
Проблема: каким-то образом seTimeout вызывает продолжение цикла. К моменту, когда страница ждет несколько секунд, генерируются сотни запросов GET. Мне нужен полный процесс для замораживания, пока код ждет заданное время. Мой браузер обнаруживает этот непрерывный цикл из-за большой активности и просит его убить.
Пожалуйста, помогите мне разобраться.
Попробуй это,
$(function(){
r();
});
function r(){
var timeOut = 5000;
if(document.body.bgColor=='green'){
document.body.bgColor = 'red';
timeOut = 10000;
}else{
document.body.bgColor = 'green';
}
setTimeout(r,timeOut);
}
пожалуйста, посмотрите
<script>
function g() {
document.body.bgColor = 'green';
}
function r() {
document.body.bgColor = 'red';
}
$(document).ready(function(){
function changeBG()
{
$.get("http://localhost:8080/t.html", function( data )
{
setTimeout('g()',10000);
setTimeout('r()',data*1000);
changeBG();
});
}
changeBG();
});
</script>
setTimeout не будет замораживать вашу функцию while, потому что ее асинхронный. Он будет просто ждать и выполнять g()
истечении заданного времени.
setInterval(function() {
$.get("http://localhost:8080/t.html", function( data ){
if(data=="green") g();
else r();
});
},10000);
это будет выполнять GET-запрос каждые 10 секунд и установить фон зеленым, когда data
зеленые, в противном случае - красным.
Я не совсем понимаю, чего вы хотите достичь, поэтому вам нужно немного изменить это.
g()
(должно быть в общей сложности 10100 мс), это то, что вы имеете в виду ?
while(1)