Привет! Только начал изучать js. Всю голову сломал. Помогите! Страница:
http://lp.medcentrperm.ru/ Скрипт (ajax) достает из бд информацию и выводит на страницу. Внутри есть условие:
if(i % 3 == 0) {
elem = document.createElement('div');
elem.className = 'clearfix';
parent.appendChild(elem);
}
Оно не корректно работает, когда происходит:
setTimeout(function() {
getComments(count);
}, 3000);
Так, будто значение i обнуляется.
Но при перезагрузке страницы работает нормально.
Класс clearfix нужен для корректной работы сетки bootstrap.
Код:
function getComments(count = 0) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('post', 'libs/get_comments.php', true);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send('count=' + count);
xmlhttp.onreadystatechange = function() {
if(xmlhttp.readyState == 4) {
if(xmlhttp.status == 200) {
var data = xmlhttp.responseText;
if(data != 'empty') {
data = JSON.parse(data);
for(var i = 0; i < data.length; i++) {
var parent = document.getElementsByClassName('comm')[0];
var elem = document.createElement('div');
if(i % 3 == 0) {
elem = document.createElement('div');
elem.className = 'clearfix';
parent.appendChild(elem);
}
elem = document.createElement('div');
elem.className = 'col-md-3 col-md-offset-1';
parent = parent.appendChild(elem);
elem = document.createElement('div');
elem.className = theme_head;
parent.appendChild(elem);
var text = data[i].name;
var textNode = document.createTextNode(text);
elem.appendChild(textNode);
elem = document.createElement('div');
elem.className = theme_body;
parent.appendChild(elem);
text = data[i].email;
textNode = document.createTextNode(text);
elem.appendChild(textNode);
parent = parent.appendChild(elem);
elem = document.createElement('div');
elem.className = 'item-body-inner-padding';
parent.appendChild(elem);
text = data[i].comment;
textNode = document.createTextNode(text);
elem.appendChild(textNode);
var max = data[i].id;
}
count = max;
}
}
}
}
setTimeout(function() {
getComments(count);
}, 3000);
}
Решение взято со стороннего сайта. Вот описание: "В body, используя атрибут onload мы сразу вызываем нашу функцию. В нее передается параметр count, который по умолчанию равен 0. Дальше мы используем объект XMLHttpRequest, чтобы подключиться к серверу и указываем верную кодировку. Отправляем переменную count на сервер. В конце мы устанавливаем переменную count равной последнему id записи. В конце функции мы устанавливаем таймер, который будет вызывать нашу функцию каждые 3 секунды и передаем ему новое значение переменной count." Я скрипт отредактировал, добавив вывод блока с классом clearfix.
https://myrusakov.ru/javascript-ajax-add-comments.html
Это содержимое php
http://sandbox.onlinephpfunctions.co...3f12372e01a72c