2013-04-22 3 views
0

Я совершенно новичок в Javascript. Я пытаюсь реализовать кнопку, которая контролирует, обновляется ли страница или нет. Однако он не работает (нажатие кнопки вызывает некоторые действия, такие как предупреждение и т. Д., Но не меняет кнопку метки и не останавливает обновление страницы).Ручка Javascript, освежающая кнопкой

Можете ли вы сказать мне, где я ошибся, пожалуйста? Вот мой код:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Message log</title> 
    <link href="styles.css" rel="stylesheet" type="text/css"> 
</head> 

<body onload="JavaScript:timedRefresh(5000);"> 

    <button id="bRefresh" onclick="refreshMode()">Stop refreshing</button> 

    some content... 

</body> 
</html> 

<script type="text/JavaScript"> 
    <!-- 
     var refresh = 1; 

     function timedRefresh(timeoutPeriod) { 
      if(refresh == 1) { 
       setTimeout("location.reload(true);",timeoutPeriod); 
      }  
     } 

     function refreshMode() { 
      if(refresh == 1) { 
       var refresh = 2; 
       document.getElementById("bRefresh").value="Start refreshing"; 
      } else { 
       var refresh = 1; 
       document.getElementById("bRefresh").value="Stop refreshing"; 
      }  
     }; 
    // --> 
</script> 
+0

это не будет работать на all..Because раз страница начинается перезарядка Javascript остановится excecuting –

ответ

1

Ваш код должен выглядеть, как показано ниже,

 var refresh = 1; 
     var timedInterval= null; 
     function timedRefresh(timeoutPeriod) { 
      if(refresh == 1) { 
       timedInterval = setInterval(function() { location.reload(true); },timeoutPeriod); 
      }  
     } 

     function refreshMode() { 
      if(refresh === 1) { 
       refresh = 2; 
       clearInterval(timedInterval); 
       document.getElementById("bRefresh").innerHTML="Start refreshing"; 
      } else { 
       refresh = 1; 
       timedRefresh(5000); 
       document.getElementById("bRefresh").innerHTML="Stop refreshing"; 
      }  
      //document.getElementById("bRefresh").innerHTML="Start refreshing"; 
     }; 

Используйте setInterval вместо of setTimeout для повторных задач

вы указали обновленную переменную три раза, чтобы значение ваших кнопок не изменилось.

innerHTML вместо значения следует использовать для изменения текста кнопок.

Чтобы прекратить использование clearInterval, как указано выше.

+0

Это отлично работает - спасибо! – Smajl

0
<button id="bRefresh">Stop refreshing</button> 

var button = document.getElementById("bRefresh"); 
var refresh = 1; 
var timeoutPeriod = 5000; 
var id; 

function timedRefresh() { 
    if (refresh == 1) { 
     window.location.reload(true); 
    } 
} 

function refreshMode() { 
    if (refresh == 1) { 
     clearInterval(id); 
     refresh = 2; 
     button.textContent = "Start refreshing"; 
    } else { 
     id = setInterval(timedRefresh, timeoutPeriod); 
     refresh = 1; 
     button.textContent = "Stop refreshing"; 
    } 
}; 

button.addEventListener("click", refreshMode, false); 

id = setInterval(timedRefresh, timeoutPeriod); 

на jsfiddle

0

использования innerHTML для supporting IE < 9

var button = document.getElementById("bRefresh"); 
var refresh = 1; 

function refreshMode() { 
    if (refresh == 1) { 
     refresh = 2; 
     button.innerHTML = "Start refreshing"; 
    } else { 
     vrefresh = 1; 
     button.innerHTML = "Stop refreshing"; 
    } 
}; 

button.addEventListener("click", refreshMode, false); 
0

При нагрузке тела функция prepareRefresh() проверяет значение refresh (устанавливается в 1) и начинает обновлять страницу с помощью таймаута. Вы должны запустить обновление, и перед обновлением вам нужно было проверить значение refresh. Потому что в первом случае location.reload не заботится о модификации refresh. Проверьте значение refresh в конце таймаута

<script type="text/JavaScript"> 
    <!-- 
     var refresh = 1; 

     function timedRefresh(timeoutPeriod) { 
      if(refresh == 1) { 
       setTimeout("refreshPage();",timeoutPeriod); 
      }  
     } 

     function refreshPage() 
     { 
      if(refresh == 1) { 
       setTimeout("location.reload(true);", 0); 
      } 
     } 

     function refreshMode() { 
      if(refresh == 1) { 
       refresh = 2; 
       document.getElementById("bRefresh").innerHTML="Start refreshing"; 
      } else { 
       refresh = 1; 
       document.getElementById("bRefresh").innerHTML="Stop refreshing"; 
      }  
     }; 
    // --> 
</script> 
Смежные вопросы