Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Удалить сообщение (https://javascript.ru/forum/misc/62003-udalit-soobshhenie.html)

fear111 20.03.2016 12:42

Удалить сообщение
 
Доброго дня всем, имеется такой вопрос. Есть вот такая вот функция, для отправки каких-нибудь сообщений пользователю.
function message(id, messageIcon, messageText, messageColor, messageAnim, animTime) {
	var	constr = null;
	
	if (!isFree('elem2') && !isFree('elem3') && id != 3)
		return;
	
	if (id == 3) {
		constr = 'elem1';
	} else if (isFree('elem2')){
		constr = 'elem2';
	} else if (isFree('elem3')) {
		constr = 'elem3';
	}

	$('#' + constr).html('<i class="fa fa-' + messageIcon + ' fa-3x fa-pull-left"></i>' + messageText + '<i id="close" class="fa fa-close fa-pull-right"></i>').fadeIn(1000);
	
	document.getElementById(constr).onclick = function() {
		removeMessage(constr);
	}
}

Вопрос вот в чем, при клике на сообщение, мне необходимо его удалить (это реализовано) и больше не присылать. Сообщения шлю в таймере
setInterval(function() {
		message(1, "gift", "test", "pink", false, 0);
		message(2, "music", "test2", "violet", false, 0);
	}, 10000)

Сообщение закрывается, но через 10 секунд опять приходит. Как можно сделать так, чтоб сообщение, которое было кликнуто, больше не приходило?

AciDWarrioR 23.03.2016 17:33

fear111,
Думаю надо почитать про функцию setInterval

fear111 24.03.2016 13:00

Цитата:

Сообщение от AciDWarrioR (Сообщение 411835)
fear111,
Думаю надо почитать про функцию setInterval

Почитал, но всё равно нету идей, как остановить именно конкретное, кликнутое, сообщение. Для каждого сообщения, свой интервал, что ли? Не сильно жирно?

AciDWarrioR 24.03.2016 14:23

fear111,
Я вообще не понимаю зачем вам интервал?! Это разовое действие, для чего здесь нужен таймер, который запускает функцию каждые n миллисекунд?

fear111 24.03.2016 14:36

Цитата:

Сообщение от AciDWarrioR (Сообщение 411905)
fear111,
Я вообще не понимаю зачем вам интервал?! Это разовое действие, для чего здесь нужен таймер, который запускает функцию каждые n миллисекунд?

Объясняю, выводятся сообщения, если на какое-нибудь из них нажать, оно закрывается, НО, через n-ое кол-во времени они опять должы ВСЕ придти. Так понятнее задумка?

Dilettante_Pro 24.03.2016 17:32

fear111,
Цитата:

Сообщение от fear111
Сообщение закрывается, но через 10 секунд опять приходит. Как можно сделать так, чтоб сообщение, которое было кликнуто, больше не приходило?

Цитата:

Сообщение от fear111
Объясняю, выводятся сообщения, если на какое-нибудь из них нажать, оно закрывается, НО, через n-ое кол-во времени они опять должы ВСЕ придти. Так понятнее задумка?

Непонятно, чего вы хотите. Одно противоречит другому

AciDWarrioR 24.03.2016 19:13

Цитата:

Сообщение от fear111
Объясняю, выводятся сообщения, если на какое-нибудь из них нажать, оно закрывается, НО, через n-ое кол-во времени они опять должы ВСЕ придти. Так понятнее задумка?

Вы вообще сами понимаете, что вы пишите?
Вы говорите, при нажатии должно закрыться и не приходить и следом опять должны все придти. В чем подвох?

fear111 24.03.2016 20:54

Цитата:

Сообщение от AciDWarrioR (Сообщение 411927)
Вы вообще сами понимаете, что вы пишите?
Вы говорите, при нажатии должно закрыться и не приходить и следом опять должны все придти. В чем подвох?

Я то понимаю, видимо, объяснить нормально не могу. Попытаюсь ещё раз.
Объясняю, зачем мне интервал: у меня есть только 2 окошка под сообщения, но самих сообщений намного больше. Получается некая очередь, закрыл одно сообщение, на его место приходит другое. А у меня получается, что я закрываю и то же сообщение приходит опять, а должно быть следующее. Как то так.

AciDWarrioR 25.03.2016 14:46

fear111,
Ну тогда создайте подобие очереди.
Мое личное представление, создается DOM дерево с сообщениями, закрыли сообщение оно удалилось из дерево, а его место заняло сообщение, шедшее за ним, а если его надо возвращать, то добавляйте в самый конец дерева сообщений. Как-то так.

fear111 25.03.2016 20:40

Спасибо за ответ, я реализовал через массив, чтоб удалить, просто обнуляю значение, а в самой отправке условие.


Часовой пояс GMT +3, время: 16:14.