Получение значения JavaScript в переменную

1

Мой 14-летний сын работает над научным проектом, который смотрит на время реакции и возраст. Он настраивает небольшое веб-приложение для тестирования людей. Когда загружается страница, запускается таймер, и появляется задержка в кнопке STOP (4 сек. Для этого примера). Когда они нажимают кнопку остановки, таймер останавливается. Он проделал большую работу по кодированию всего этого. Он использует кусок JavaScript, который он нашел, и изменил его на свои нужды.
Его проблема - как передать приостановленное время в переменную, а затем передать ее на другую страницу. Он может успешно это сделать, если переменная статична, т.е. "Привет". Что не так с функцией stop(); в этом примере? В настоящее время он получает [объект HTMLSpanElement]

var clsStopwatch = function() {
    // Private vars
    var startAt = 0;    // Time of last start / resume. (0 if not running)
    var lapTime = 0;    // Time on the clock when last stopped in milliseconds

    var now = function() {
            return (new Date()).getTime(); 
        }; 

    // Public methods
    // Start or resume
    this.start = function() {
            startAt = startAt ? startAt : now();
        };

    // Stop or pause
    this.stop = function() {
            // If running, update elapsed time otherwise keep it
            lapTime = startAt ? lapTime + now() - startAt : lapTime;
            startAt = 0; // Paused
        };

    // Reset
    this.reset = function() {
            lapTime = startAt = 0;
        };

    // Duration
    this.time = function() {
            return lapTime + (startAt ? now() - startAt : 0); 
        };
};

var x = new clsStopwatch();
var $time;
var clocktimer;

function pad(num, size) {
var s = "0000" + num;
return s.substr(s.length - size);
}

function formatTime(time) {
var h = m = s = ms = 0;
var newTime = '';

h = Math.floor( time / (60 * 60 * 1000) );
time = time % (60 * 60 * 1000);
m = Math.floor( time / (60 * 1000) );
time = time % (60 * 1000);
s = Math.floor( time / 1000 );
ms = time % 1000;

newTime = pad(h, 2) + ':' + pad(m, 2) + ':' + pad(s, 2) + ':' + pad(ms, 3);
return newTime;
}

function update() {
$time.innerHTML = formatTime(x.time());
}

function start() {
$time = document.getElementById('time');
update();
clocktimer = setInterval("update()", 1);
x.start();
$(document).ready(function() { $('#mybutton').delay(4000).fadeIn(0);});
}

function stop() {
x.stop();
//var varTime = "Hello";
var varTime = document.getElementById('time');
    window.location.href = "somephpfile.php?etime=" + varTime;


}
  • 1
    Просто попробуйте: var varTime = document.getElementById('time').innerText;
  • 0
    ваш текущий varTime вернет объект (который я считаю div или p). Вы должны использовать .innerText, чтобы получить текстовое значение внутри объекта :). Надеюсь это поможет
Теги:

2 ответа

1
Лучший ответ

var varTime = document.getElementById('time') присваивает элемент переменной, что является хорошим и не плохим вариантом, но я считаю, что вашему сыну нужен только текст HTML этого элемента.

Есть два варианта. Первая опция сохраняет элемент time в функции для возможного расширения позже.

function stop() {
    x.stop();
    var varTime = document.getElementById('time');
    if (varTime) {
        window.location.href = "somephpfile.php?etime=" + varTime.innerHTML;
    }
}

Или просто извлеките требуемый текст и отправьте его, даже если он пуст.

function stop() {
    x.stop();
    if (document.getElementById('time')) {
        window.location.href = "somephpfile.php?etime=" + document.getElementById('time').innerHTML;
    }
}
  • 1
    Оба работают. Спасибо!
  • 1
    Рад был помочь. Удачи с проектом.
0

Вы должны прочитать innerHTML элемента вместо этого, просто прочитав элемент. Это может быть достигнуто путем:

function stop() {
x.stop();
//var varTime = "Hello";
var varTime = document.getElementById('time').innerHTML;
window.location.href = "somephpfile.php?etime=" + 
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню