function callByTimeouts(handler, timeouts) {
var startTime = Date.now();
var currentIndex = 0;
var timer = setInterval(function () {
var currentTime = Date.now();
var nextCallTime = startTime + timeouts[currentIndex];
if (currentTime < nextCallTime) return;
handler();
var nextIndex = currentIndex + 1;
if (nextIndex < timeouts.length) {
currentIndex = nextIndex;
} else {
clearInterval(timer);
}
}, 100);
}
callByTimeouts(function () {
console.log('qwerty');
}, [1000, 2500, 7500]);
function Mock() {
this.val = 'val';
this.log = {
start: function() {
this.log.timer = setInterval(function() {
console.log(this.val);
}.bind(this), 1000);
}.bind(this),
stop: function() {
clearInterval(this.log.timer);
delete this.log.timer;
}.bind(this)
};
}
function Timer(handler, interval) {
this.handler = handler;
this.interval = interval;
}
Timer.prototype.start = function () {
this.timer = setInterval(this.handler, this.interval);
};
Timer.prototype.stop = function () {
clearInterval(this.timer);
delete this.timer;
};
function Mock() {
this.val = 'val';
this.log = new Timer(function () {
console.log(this.val);
}.bind(this), 1000);
}
class Element {
constructor() {
this._events = {};
}
addEventListener(event, listener) {
let listeners = this._events[event];
if (!listeners) {
listeners = this._events[event] = [];
}
listeners.push(listener);
}
removeEventListener(event, listener) {
const listeners = this._events[event];
if (listeners) {
const index = listeners.indexOf(listener);
if (index !== -1) {
listeners.splice(index, 1);
}
}
}
dispatchEvent(event) {
const listeners = this._events[event];
if (listeners) {
for (let listener of listeners) {
listener(event);
}
}
}
}
this.parent.appendChild(text);
text всегда является ссылкой на элемент span, который был создан при объявлении объекта list. Если применять appendChild к одному и тому же элементу, он будет каждый раз переносить его из старого места на новое. Исходя из вашей задачи вам нужно создавать в каждой итерации новый элемент. Тоже самое относится и к input'у. row.addEventListener('click', function () {
// any code
}, false);
var m1 = [['Euroshop', 2500, 7500], ['Euroshop', 2500, 7500], ['Tur', 2500, 7500]],
m2 = [],
helper = {};
for (var i = 0; i < m1.length; i++) {
var name = m1[i][0],
data = m1[i].slice(1);
if (name in helper) {
helper[name][0] += data[0];
helper[name][1] += data[1];
} else {
helper[name] = data;
}
}
for (var key in helper) {
m2.push(key, helper[key][0], helper[key][1]);
}
console.log(m2);
var numbers = [0, 0, 0, 0, 0, 0, 0, 0, "101", "83", "13", "35"].map(Number);
var link = document.querySelector('селектор-ссылки');
link.href = link.href.split('?')[0] + '?active=' + active; // где active - id способа оплаты
var params = getParams();
if (params && params.active) {
var input = document.querySelector('#' + params.active); // если у инпутов есть соответствующие id
input.classList.add('active');
}
function getParams() {
var query = location.search.slice(1),
props = query.split('&'),
result = {};
props.forEach(function (prop) {
if (prop) {
var chunks = prop.split('=', 2),
key = chunks[0],
value = chunks[1];
result[key] = value ? decodeURIComponent(value) : true;
}
});
return Object.keys(result).length ? result : null;
}