Я беспокоился об этой проблеме какое-то время, у меня есть таймер с четырьмя кнопками запуска, остановки, сброса и кругов, когда я звоню Stopwatch.start();
, Stopwatch.stop();
или Stopwatch.reset();
он работает просто отлично но когда я пытаюсь позвонить Stopwatch.lap();
, это не сработает!Вызовите функцию круга в таймере
У меня был ответ раньше, но теперь у меня есть новый компьютер и тому подобное, и я не могу вызвать функцию. Консоль говорит: «Uncaught TypeError: Stopwatch.lap не является функцией», и я не могу найти проблему.
Вот мой код:
var Stopwatch = {
init: function(elem, options) {
var timer = createTimer(),
startButton = createButton("start", start),
stopButton = createButton("stop", stop),
resetButton = createButton("reset", reset),
lapButton = createButton("lap", lap),
lapSpan = createTimer(),
offset,
clock,
interval;
options = options || {};
options.delay = options.delay || 1;
elem.appendChild(timer);
elem.appendChild(startButton);
elem.appendChild(stopButton);
elem.appendChild(resetButton);
elem.appendChild(lapButton);
elem.appendChild(lapSpan);
reset();
function createTimer() {
return document.createElement("span");
}
function createButton(action, handler) {
var a = document.createElement("a");
a.href = "#" + action;
a.innerHTML = action;
a.addEventListener("click", function(event) {
handler();
event.preventDefault();
});
return a;
}
function start() {
if (!interval) {
offset = Date.now();
interval = setInterval(update, options.delay);
}
}
function stop() {
if (interval) {
clearInterval(interval);
interval = null;
}
}
function lap() {
lapSpan.innerHTML=timer.innerHTML;
}
function reset() {
clock = 0;
render(0);
lap();
}
function update() {
clock += delta();
render();
}
function render() {
timer.innerHTML = clock/1000;
}
function delta() {
var now = Date.now(),
d = now - offset;
offset = now;
return d;
}
this.getTime=function() {
return clock;
}
this.start = start;
this.stop = stop;
this.reset = reset;
}
};
var elems;
window.onload=function() {
elems = document.getElementsByClassName("basic");
for (var i = 0, len = elems.length; i < len; i++) {
Stopwatch.init(elems[i]);
}
}
И мне нужно, чтобы вызвать функцию круга при нажатии определенной клавиши, и это выглядит следующим образом:
document.onkeypress = function(e) {
e = e || window.event;
var charCode = e.charCode || e.keyCode,
character = String.fromCharCode(charCode);
if(e.charCode == 98 || e.keyCode == 98) {
Stopwatch.start();
} else if(e.charCode == 114 || e.keyCode == 114) {
Stopwatch.lap();
}
};
я знаком с JavaScript и jQuery в этом проекте, но я также знаю HTML и JavaScript.
Я supose вам нужно добавить 'this.lap = коленей;' и в конце этого класса/объекта ... – Rikard
OMG Спасибо так много, выкладываю ответ и Я отмечу это как ответ! : D – Nikki