Запускать скрипт javascript, когда нажатие кнопки не работает

У меня есть следующий сценарий.

var time = document.getElementById("picker-dates").value;
time = time.split(':');
var date = new Date();
var countDownDate = date.setHours(time[0], time[1], time[2]);

function countdownTimeStart() {
var x = setInterval(function () {

    // set hours, minutes and seconds, decrease seconds
    var hours = time[0];
    var minutes = time[1];
    var seconds = time[2]--;

    // if seconds are negative, set them to 59 and reduce minutes
    if (time[2] == -1) {
        time[1]--;
        time[2] = 59
    }

    // if minutes are negative, set them to 59 and reduce hours
    if (time[1] == -1) {
        time[0]--;
        time[1] = 59
    }

    // Output the result in an element with id = "demo"
    // add leading zero for seconds if seconds lower than 10
    if (seconds < 10) {
        document.getElementById("demo").innerHTML = hours + ": " + minutes + ": " + "0" + seconds + " ";
    } else {
        document.getElementById("demo").innerHTML = hours + ": " + minutes + ": " + seconds + " ";
    }


    // If the count down is over, write some text
    if (distance < 0) {
        clearInterval(x);
        document.getElementById("demo").innerHTML = "00:00:00";
    }
}, 1000);}
 countdownTimeStart();

Поэтому я хочу запускать этот скрипт при нажатии кнопки. Я пробовал это как

<button class = "start" onclick = "countdownTimeStart();">Start</button>

Но это не работает. Как я могу заставить это работать. Может ли кто-нибудь помочь мне решить эту проблему.

если вы удалите внутренности countdownTimeStart() и просто поместите туда предупреждение (или console.info), будет ли эта функция вообще вызвана?

Doug 27.04.2018 19:32

Переменное расстояние никогда не определяется, не могли бы вы в следующий раз предоставить работоспособный пример?

HMR 27.04.2018 19:37

В чем проблема с переменной расстояния? Подскажите, пожалуйста

Chathuri Fernando 27.04.2018 19:50

Переменное расстояние, которое используется в условии if, никогда не определяется и не объявляется для этого. Он просто появляется в условии if. Что делает переменная расстояния и откуда она в первую очередь получает свое значение, прежде чем мы начнем проверять ее значение?

user6277510 27.04.2018 19:57

Если бы вы могли просто поделиться HTML-кодом элемента выбора дат, я думаю, что код может начать работать.

user6277510 27.04.2018 20:05

@binDebug Это HTML-код элемента выбора дат "<input type = " text "id = " picker-dates "/>

Chathuri Fernando 27.04.2018 20:26

Пожалуйста, помогите мне решить эту проблему. Я новичок в javascript

Chathuri Fernando 27.04.2018 20:30

Ответ, размещенный ниже, с подробностями о том, как и почему сценарий был неправильным.

user6277510 27.04.2018 20:36
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
8
989
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Этот код похож на тот, который вы запрашивали вчера, за исключением того факта, что он запрашивает ввод часов, минут и секунд. Ссылка здесь: Таймер обратного отсчета JavaScript для часа, минут и секунд при нажатии кнопки запуска

У вас было несколько частей кода, отсутствовавших со вчерашнего дня, особенно та часть, где вам нужно учесть текущую дату (переменная сейчас) и расстояние, которое таймер должен пройти (переменная расстояние), вычесть сейчас из введенных часов, минут и секунд.

Также ввод данных должен производиться после нажатия кнопки. Следовательно, переместил код, в котором вы считываете значение из поля даты средства выбора ввода, в обработчик нажатия кнопки.

С этой целью вот рабочий код

  1. HTML

<!DOCTYPE html>
<html>

  <head>
    <link rel = "stylesheet" href = "style.css">
    <script src = "script.js"></script>
  </head>

  <body>
    <div>Please enter the time in HH:MM:YY</div>
    <input type = "text" id = "picker-dates" />
    <p id = "demo"></p>
    <button id = "start" class = "start" onclick = "countdownTimeStart()">Start</button>
  </body>

</html>
  1. Сценарий

function countdownTimeStart() {
var time = document.getElementById("picker-dates").value;
time = time.split(':');
var date = new Date();
var countDownDate = date.setHours(time[0], time[1], time[2]); 

console.info(countDownDate);
  
  
var x = setInterval(function () {

    // set hours, minutes and seconds, decrease seconds
    var hours = time[0];
    var minutes = time[1];
    var seconds = time[2]--;

    // if seconds are negative, set them to 59 and reduce minutes
    if (time[2] == -1) {
        time[1]--;
        time[2] = 59
    }

    // if minutes are negative, set them to 59 and reduce hours
    if (time[1] == -1) {
        time[0]--;
        time[1] = 59
    }
    
    // Get todays date and time
    var now = new Date().getTime();
    
    // Find the distance between now an the count down date
    var distance = countDownDate - now;
    

    // Output the result in an element with id = "demo"
    // add leading zero for seconds if seconds lower than 10
    if (seconds < 10) {
        document.getElementById("demo").innerHTML = hours + ": " + minutes + ": " + "0" + seconds + " ";
    } else {
        document.getElementById("demo").innerHTML = hours + ": " + minutes + ": " + seconds + " ";
    }


    // If the count down is over, write some text
    if (distance < 0) {
        clearInterval(x);
        document.getElementById("demo").innerHTML = "00:00:00";
    }
}, 1000);

}

Рабочий планшет здесь: https://plnkr.co/edit/65UL4Tj2gGwpeWBfHbgy?p=preview

Я очень ценю и благодарю вас за ваш ответ. Но все равно не работает. Я не мог его решить и застрял здесь.

Chathuri Fernando 01.05.2018 05:45

Где именно ты застрял? Не могли бы вы поставить его на доску, чтобы мы могли посмотреть? Или, может быть, поделитесь своим кодом целиком?

user6277510 01.05.2018 06:09

Я хочу запустить этот скрипт при нажатии кнопки «Пуск». Но не работает

Chathuri Fernando 01.05.2018 06:16

Не могли бы вы попробовать добавить скрипт и HTML-код, указанные выше, в файл HTML и js, сослаться на файл и запустить?

user6277510 01.05.2018 06:37

Другие вопросы по теме