У меня есть несколько тегов <span>
, содержащих секунды.
Пример: <span class="timeout">27</span>
<span class="timeout">58</span>
Я пытаюсь увеличить их на 1 секунду каждый раз, но у меня возникают некоторые трудности, а именно, он помещает неправильные данные в теги <span>
.
Я должен делать что-то неправильно, ниже код, который я пытаюсь использовать.
Это должно быть неправильно и полно ошибок, но хорошо, я все еще пытаюсь это изучить ;-)
function timer() {
var self = $(this);
var idx = $("span.timeout");
var sec = parseInt(self.find('span.timeout').text())
var interval = setInterval(function() {
idx.each(function() {
idx.text(sec++)
});
}, 1000);
}
Заранее спасибо,
Роберт.
Вы хотите сделать это так:
function timer() {
var self = $(this);
var idx = $("span.timeout");
//console.log(self.find('span.timeout').text()); //gets you nothing
var interval = setInterval(function () {
idx.text(function (_, txt) { //use .text()
return parseInt(txt, 10) + 1; //convert the current text to int and increment it.
});
}, 1000);
}
Ваша проблема здесь: var sec = parseInt(self.find('span.timeout').text())
сам это ничего, кроме окна в вашем случае, и вы пытаетесь найти в них var sec = parseInt(self.find('span.timeout').text())
и получать его текст. Что вам ничего не дает, и вы делаете parseInt
ни на что, что вы получаете NAN
а затем используете его для вычисления, что неверно. Таким образом, вы можете использовать обратный вызов текстовой функции и получать текущее текстовое значение этого диапазона, а затем возвращать обновленное значение для этого диапазона.