【发布时间】:2018-11-05 06:03:58
【问题描述】:
我正在尝试为自己打造一个小锻炼工具。在 Python 中,我正在构建一个随机的时间数组,每个时间都链接到一个随机的练习数组。在前端(在我的 html 模板中),我在侧面的类菜单中列出了所有这些。然后,我使用我的 javascript 通过 document.getElementsByClassName("exercises") 或 document.getElementsByClassName("times") 获取整个练习和时间数组。
我有一个开始按钮,点击后将开始我的锻炼。我希望它:对于 document.getElementsByClassName 中的每个元素:运行倒数计时器直到时间到期,在主屏幕上显示倒数计时器和锻炼。
function myfunction() {
var times = document.getElementsByClassName('time');
// console.log(times.item(0).innerHTML);
var exercises = document.getElementsByClassName('exercise');
var display = document.getElementById('currentexercise');
for (var i = 0; i < times.length; i++) {
var current = parseInt(times.item(i).innerHTML);
var timeinterval = current;
for (var j = 1; j <= timeinterval; j++) {
runclock(current, i, exercises.item(i).innerHTML, display);
current = current - 1;
}
}
function runclock(current, i, exercise, display) {
var x = setTimeout(function() {
console.log(current);
var now = new Date();
var endoftime = new Date();
endoftime.setSeconds(now.getSeconds() + parseInt(current));
var distance = endoftime - now;
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
console.log('hit');
document.getElementById('mytimer').innerHTML = minutes + "m " + seconds + "s ";
display.innerHTML = exercise;
}, 1000);
}
}
{% extends "base.html" %}
{% load static %}
{% block content %}
<div class = "row">
<div class = "col-sm-3">
{% if workout %}
<ul class="list-group">
{% for exercise in workout %}
<li class="list-group-item exercises">{{ exercise.0 }}, {{ exercise.1 }}</li>
<li class = "hidden time">{{ exercise.1 }}</li>
<li class = "hidden exercise">{{ exercise.0 }}</li>
{% endfor %}
</ul>
{% endif %}
</div>
<div class = "col-sm-9">
{% if form %}
<h1> Spences Workout Form</h1>
<form action="/" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit">
</form>
{% else %}
<h1>Spences Workout Tool</h1>
<h3>Rounds: {{ rounds }}</h3>
<button id = "startbutton" onclick = "myfunction()">Start</button>
{% endif %}
<div id = "mytimer"></div>
<div id = "currentexercise"></div>
</div>
</div>
{% endblock %}
这是非常快速地通过每个命令,但我希望它像常规时钟计时器一样工作。我很难理解如何正确使用 setTimeout/setInterval。请让我知道如何在我的第二个 forloop 中基本上每秒只运行一次“j”。
谢谢!
【问题讨论】:
-
我不熟悉 Python。
{{ exercise.1 }}是做什么的?不应该是{{ exercise.time }}吗?我想exercise.0是练习的名称,exercise.1是练习的时间。时间格式是什么? -
@DominiqueFortin 是对的。这是 Django/Jinja 语法,是后端相关的东西。请发布一个真实的示例(浏览器看到的),以便我们更轻松地调试它。
标签: javascript html