Я использую две функции, одну из которых переводит набор вопросов к следующему вопросу, а другой - для перемещения индикатора выполнения. Вопрос, который перемещает пользователя в nextQuestion
, переопределяет первую функцию, а функция progressBar
не обрабатывается.Только для выполнения функции Javascript при завершении предыдущей функции
Нет ошибок, и я изменил порядок или функции, и одна большая функция имеет одинаковый результат. Если я выполняю функции отдельно, обе функции работают идеально. Они начинаются с @onClick на кнопке.
Я попытался использовать обещания с тем же результатом.
Как я могу заставить функцию nextQuestion
работать только при завершении progressBar
?
Бар Прогресс
progressBar: function(item){
this.percentQuestion = 100/this.numberQuestions;
var elem = document.getElementById("myBar");
var numericWidth = elem.style.width.replace(/\D/g,'');
var currentWidth = +numericWidth;
var newWidth = +numericWidth + +this.percentQuestion;
var id = setInterval(frame, 10);
function frame() {
if (currentWidth < newWidth) {
currentWidth++;
elem.style.width = currentWidth + '%';
} else{
clearInterval(id);
};
};
this.nextQuestion(item);
},
Следующий вопрос
nextQuestion: function(item){
var newKey = item + 1;
var y = document.getElementById('question' + item);
var x = document.getElementById('question' + newKey);
if(y.style.display === 'block'){
y.style.display = 'none';
x.style.display = 'block';
console.log("Changed");
};
},
UPDATE
nextQuestion: function(item){
window.setTimeout(function() { function(item){
var newKey = item + 1;
var y = document.getElementById('question' + item);
var x = document.getElementById('question' + newKey);
if(y.style.display === 'block'){
y.style.display = 'none';
x.style.display = 'block';
console.log("Changed");
};
}, 1000);
},
бегущий JSFiddle, которые создают ваш сценарий будет полезно. – janmvtrinidad
Я не совсем уверен, что вы имеете в виду, но похоже, что вы должны поместить 'this.nextQuestion (item)' в 'else', после' clearInterval (id) '. – Razzildinho