Refre sh Div автоматически через каждые 5 секунд - PullRequest
0 голосов
/ 09 января 2020

мне нужно обновлять тег div через каждые 5 секунд. Для этого мне нужно прочитать локальный файл .txt и показать, что вывод на веб-страницу происходит так же, как при обновлении .txt, эти данные должны загружаться на веб-страницу с использованием html и javascript Я использую flask сервер

<script type="text/javascript">

    var refreshDiv = setInterval(
    function(){
    var fs = require('fs');
    // var text = fs.readFileSync("static/output.txt");
    var text = fs.readFileSync(path.join(__dirname, 'txt', 'static/output.txt'))
    var textByLine = text.split("\n")

        testByLine = testByLine + 1;
        document.getElementById("test").innerHTML = "aaa" + testByLine;
        location.reload(true);
      }, 4000;
</script>

Ответы [ 4 ]

0 голосов
/ 09 января 2020

Прежде чем добавлять содержимое файла в div, просто очистите содержимое div. Я не думаю, что вам нужно использовать location.reload. просто очистите div.

var fs = require('fs');
var refreshDiv = setInterval(function(){
    document.getElementById("test").innerHTML = "aaa"
    var text =  
    fs.readFileSync(path.join(__dirname,'txt','static/output.txt'));
    var textByLine = text.split("\n")

    testByLine = testByLine + 1;
    document.getElementById("test").innerHTML = "aaa" + testByLine;
}, 5000);

И также не требуется fs библиотека каждые 5 секунд. сделать его доступным c.

ПРИМЕЧАНИЕ: вы пропустили ) конец функции.

0 голосов
/ 09 января 2020

Это должно сработать, я думаю, вам не хватает закрывающих скобок setInterval

<script type="text/javascript">

    var refreshDiv = setInterval(
    function(){
    var fs = require('fs');
    // var text = fs.readFileSync("static/output.txt");
    var text = fs.readFileSync(path.join(__dirname, 'txt', 'static/output.txt'))
    var textByLine = text.split("\n")

        testByLine = testByLine + 1;
        document.getElementById("test").innerHTML = "aaa" + testByLine;
        location.reload(true);
      }, 5000);
</script>
0 голосов
/ 09 января 2020

Мне кажется, что вам не хватает ); после 4000;. Это должно быть 4000);

В результате ваш код должен выглядеть следующим образом

<script type="text/javascript">
    var refreshDiv = setInterval(
    function(){
    var fs = require('fs');
    // var text = fs.readFileSync("static/output.txt");
    var text = fs.readFileSync(path.join(__dirname, 'txt', 'static/output.txt'))
    var textByLine = text.split("\n")

        testByLine = testByLine + 1;
        document.getElementById("test").innerHTML = "aaa" + testByLine;
        location.reload(true);
      }, 4000);
</script>
0 голосов
/ 09 января 2020

Различные способы сделать это, но мне нравится сохранять аккуратность кода, поэтому я помещаю метод в функцию.

//embed the code here 
function runMycode(){
    var fs = require('fs');
    // var text = fs.readFileSync("static/output.txt");
    var text = fs.readFileSync(path.join(__dirname, 'txt', 'static/output.txt'))
    var textByLine = text.split("\n")

        testByLine = testByLine + 1;
        document.getElementById("test").innerHTML = "aaa" + testByLine;
        location.reload(true);
}

Если вы хотите запустить его несколько раз

//set the timeout function and run the code
setInterval(function(){
   runMyCode();
}, 30000);

или в случае, если вы хотите запустить его один раз

setTimeout(function() {   
  runMyCode();
}, 50000);

И если вы хотите сделать это в браузере, можете сделать это за вас, если вы добавите этот метатег в вашу голову тег.

<meta http-equiv="refresh" content="30"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...