Таймер обратного отсчета, где пользователь вводит, как долго он должен работать

Я вижу пару проблем с вашим кодом PowerShell:

  • Set-Location не возвращает никакого вывода, поэтому переменная $database пуста.
  • foreach ($database in $database) Вы используете ту же переменную, что должен удерживать список баз данных как переменную цикла. Используйте переменную как переменную цикла. Кроме того, поскольку $database пуст (см. Выше), PowerShell просто пропустит цикл.
  • Вам нужно извлечь имена базы данных из вывода psql, иначе вы получите всю строку (включая информацию о владельце, кодировке и т. д.).
  • «Магический оператор» --% останавливает PowerShell от разбора остальной части командной строки, поэтому ваша переменная $database в имени выходного файла не будет
  • Вы не указали имя базы данных в командной строке pg_dump.

Измените код на что-то вроде этого:

Set-Location 'E:\Exxellence\PostgreSQL\9.5\bin'
$databases = (.\psql -U postgres -l) -match '^ \S' | ForEach-Object {
    ($_ -split '\s+\|\s+')[0].Trim()
} | Where-Object {
    $_ -match '^(beheer|forms|loket|kcs|mo|alfresco)$'
}

foreach ($db in $databases) {
    .\pg_dump -h localhost -p 5432 -U postgres -F c -b -f "${db}.backup" $db
}

или вот так:

Set-Location 'E:\Exxellence\PostgreSQL\9.5\bin'
(.\psql -U postgres -l) -match '^ \S' | ForEach-Object {
    ($_ -split '\s+\|\s+')[0].Trim()
} | Where-Object {
    $_ -match '^(beheer|forms|loket|kcs|mo|alfresco)$'
} | ForEach-Object {
    .\pg_dump -h localhost -p 5432 -U postgres -F c -b -f "${_}.backup" $_
}

, и он должен делать то, что вы хотите.

Примечание. Фильтр для имен базы данных предполагает, что это точные имена. Если это только частичные имена, измените строку на $_ -match 'beheer|forms|loket|kcs|mo|alfresco'.

-2
задан Barmar 19 January 2019 в 19:02
поделиться

2 ответа

Намного проще

var timer;

function setTimer(event){

      if(timer) 
      {
         clearInterval(timer)
      }

      var timerValue = document.getElementById("timerstart").value ;
   
      timer = setInterval(function(){
      
        if(timerValue > 0){
        
          document.getElementById("timer").innerHTML=timerValue;
          
          timerValue --;
        } else {
          clearInterval(timer)
        }


      },1000);


 }
<div>
    <label>Start Timer After(seconds)</label>
    <input type="text" name="timerstart" id="timerstart" />
</div>

<button onclick="setTimer(event)" >Start Timer</button>

<div ><span>Timer : </span><span id="timer"></span></div>

0
ответ дан Observablerxjs 19 January 2019 в 19:02
поделиться

Вот простой пример:

    var sec = 10;
    $('#btn').on('click', function(){
      
      var timer = setInterval(function(){
        var sec = parseInt($('#timer').val());
        if(sec>0) {
          sec--;
          $('#timer').val(sec);
        } else {
          foo();
          clearInterval(timer);
        }
      }, 1000)
    });

    function foo(){
      alert('Timer ended!');
    }
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <input id="timer" value="10" /><button id="btn">Start timer</button>

0
ответ дан Szabi Danyi 19 January 2019 в 19:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: