2013-11-23 2 views
0

Здесь я использую код ниже для использования функции setInterval() Javascript. Код работает только один раз, когда он не запускает docoment.write, чтобы записать значение i в браузере. Может кто-нибудь пожалуйста, дайте мне знать, на каком месте я не прав с моим кодом:HTML Javascript - setInterval не работает должным образом

<html> 
<head> 
    <script type="text/javascript"> 
    function inCreas(){ 
     var i = 0; 
     var interval = setInterval(func,2000); 
     function func(){i++; 
      document.write("<p>This is the value of i : "+ i +"</p>"); 
      } 
    } 
    </script> 
    </head> 
    <body onload="inCreas()"> 

    </body> 
    </html> 

Я попытался это в IE 8 и Firefox 24.0, но результат тот же.

Заранее спасибо. Vasudev

+1

Вы не можете использовать 'document.write' после того, как документ завершил загрузку. Выберите элемент, к которому вы хотите добавить контент, и либо создайте новые узлы DOM, либо добавьте их, либо добавьте дополнительную строку HTML в свойство 'innerHTML'. –

+0

Вы не можете? Он работает в Chrome. – PMint

ответ

1

document.write работает только до тех пор, пока документ «открыт». Он закрывается, когда достигается конечная точка html. После этого при вызове document.write открывается совершенно новый документ.

Теперь это происходит на странице:

  1. оригинальный документ создается и функция OnLoad зарегистрирована.
  2. документ закрыт
  3. функция setInterval запускает
  4. Поскольку существующий документ уже закрыт, новый создается, полностью переписав старую. Вы можете проверить это, поместив некоторые вещи в тег тела - он исчезнет, ​​как только будет выполнен document.write. Это создает совершенно новый контекст - ваш setInterval также больше не присутствует в новом документе.

Для того, чтобы достигнуть нужного эффекта, то вместо этого вы можете использовать innerHTML - см. DEMO.

Смежные вопросы