как мне отобразить значение показаний секундомера на моем экране

#javascript

#javascript

Вопрос:

Я пытался работать с этими кодами, но мне кажется, что я все понял неправильно. Я новичок в JS и попробовал проект секундомера, но, должно быть, я ошибся с логикой или что-то в этом роде.

Пожалуйста, найдите код ниже;

 let time;
const timer = document.getElementById('#timer');
let timeCount = 0;
let timeInterval;
const buttons = document.querySelectorAll('.button');

// function print(txt) {
//     document.getElementById("timer").innerHTML = txt;
//   }

//creating minutes and seconds format
function timeToString(counter){
    let hours = counter/3600000;
    let hr = Math.floor(hours);
    let minutes = (hours - hr) * 60;
    let min = Math.floor(minutes); 

    let seconds = (minutes - min) * 60;
    let sec = Math.floor(seconds); 
}

buttons.forEach(function(button){
 console.log(button);
    button.addEventListener('click', function(event){
        const target = event.currentTarget.classList;
        if(target.contains('start')){
            // function start(){
                time = Date.now() - timeCount;
                timeInterval = setInterval(function returnTime(){
                    timeCount = Date.now() - time;
                    console.log(timeToString(timeCount));
                },1000);          
            // }
    
        }else if(target.contains('stop')){
            clearInterval(timeInterval);
    
        }else {
            clearInterval(timeInterval);
            return ('00:00');
            timeCount = 0;
            }
        
    });
    

});
 

Комментарии:

1. Добро пожаловать в Stack Overflow. Обычно в вопросах указывается, в чем проблема, что происходит не так и что вы пробовали. Простое предоставление вашего (длинного) кода затрудняет нам помощь

2. Можете ли вы указать, как выглядит результат? Итак, мы можем знать, в чем проблема

Ответ №1:

Поскольку точный вопрос здесь был неясен, я решил просто исправить все это. Я включу код, но сначала я хочу объяснить, что я сделал, а не просто кормить ложкой.

  • Во-первых, селектор для ваших кнопок был неправильным, он выбирал классы вместо фактического тега, поэтому я просто удалил ‘.’.
  • Ваша функция timeToString (time) ничего не вернула, я добавил return hr "h " min "m " sec "s";
  • Я изменил time timeStarted , чтобы устранить путаницу. Теперь, когда нажата кнопка «Пуск», она устанавливает текущее время в эту переменную, а затем просто вычитает его из текущего времени при каждом обновлении.
  • Наконец, я добавил немного кода, чтобы фактически обновить время на экране: document.getElementById("timer").innerHTML = timeToString(Date.now() - timeStarted);
 let timeStarted;
let timeInterval;
const timer = document.getElementById('#timer');
const buttons = document.querySelectorAll('button');

function timeToString(counter){
    let hours = counter/3600000;
    let hr = Math.floor(hours);
    let minutes = (hours - hr) * 60;
    let min = Math.floor(minutes); 

    let seconds = (minutes - min) * 60;
    let sec = Math.floor(seconds); 
    
    return hr   "h "   min   "m "   sec   "s";
}

buttons.forEach(function(button){
    button.addEventListener('click', function(event){
        const target = event.currentTarget.classList;
        if(target.contains('start')){
            timeStarted = Date.now();
            timeInterval = setInterval(function(){
                document.getElementById("timer").innerHTML = timeToString(Date.now() - timeStarted);
            }, 1000);
        } else if(target.contains('stop')){
            clearInterval(timeInterval);
        }
    });
    

}); 
 <div id="timer"></div>

<button class="start">start</button>
<button class="stop">stop</button> 

`

Комментарии:

1. Большое вам спасибо, что уделили этому время. Я ценю это.