Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.04.2013, 15:06
Профессор
Отправить личное сообщение для Kvark Посмотреть профиль Найти все сообщения от Kvark
 
Регистрация: 02.04.2013
Сообщений: 225

[Решено] Как отобразить бегущей строкой загруженое собщение?
Привет, я еще пока новенький в jQuery, помогите разобраться:
у меня 2 файла, в один програма пишет собщение, в другом мне его нужно отобразить в html теге:
<div id="marquee">
 ...
</div>

собщение прекрасно загружаеться:
function show(){
 $('#marquee').load('msg.txt');
};


и функция срабатывает на:
$(document).ready(function(){
 show();
 msgrun();
 setInterval('show()', 1000);
});


но оно не двигаеться

для бегущей строки я использую это:
function msgrun() { 
 var marquee = $("#marquee"); marquee.css({"overflow": "hidden", "width": "100%"}); 
 // оболочка для текста ввиде span (IE не любит дивы с inline-block) 
 marquee.wrapInner("<span>"); 
 marquee.find("span").css({ "width": "50%", "display": "inline-block", "text-align":"center" }); 
 marquee.append(marquee.find("span").clone()); 
 // тут у нас два span с текстом 
 marquee.wrapInner("<div>");
 marquee.find("div").css("width", "200%"); 
 var reset = function() { $(this).css("margin-left", "0%");
 $(this).animate({ "margin-left": "-100%" }, 12000, 'linear', reset); };
 reset.call(marquee.find("div")); 
};

если я прописываю собщение в тегах:
<div id="marquee">
 Тестовое собщение
</div>

оно прекрасно отображаеться и показывает бегущей строчкой.

Что нужно подправить чтоб оно срабатывало после загрузки собщения из файла?

Последний раз редактировалось Kvark, 04.04.2013 в 16:16.
Ответить с цитированием
  #2 (permalink)  
Старый 02.04.2013, 15:10
Аватар для animhotep
Профессор
Отправить личное сообщение для animhotep Посмотреть профиль Найти все сообщения от animhotep
 
Регистрация: 17.01.2013
Сообщений: 887

функция load будет работать только на сервере, локально из файла не подгрузит
Ответить с цитированием
  #3 (permalink)  
Старый 02.04.2013, 15:15
Профессор
Отправить личное сообщение для Kvark Посмотреть профиль Найти все сообщения от Kvark
 
Регистрация: 02.04.2013
Сообщений: 225

все прекрасно она грузит, вопрос не в этом, после загрузки не двигаеться, но показываеться, словно что то мешает выполению функции msgrun()
Ответить с цитированием
  #4 (permalink)  
Старый 02.04.2013, 15:21
Аватар для animhotep
Профессор
Отправить личное сообщение для animhotep Посмотреть профиль Найти все сообщения от animhotep
 
Регистрация: 17.01.2013
Сообщений: 887

текст вставлен после загрузки страници, похоже js его не видит
а если так?
$('#marquee').load('msg.txt', function() {
  msgrun();
});
Ответить с цитированием
  #5 (permalink)  
Старый 02.04.2013, 15:28
Профессор
Отправить личное сообщение для Kvark Посмотреть профиль Найти все сообщения от Kvark
 
Регистрация: 02.04.2013
Сообщений: 225

О! теперь работает! Спасибо огромное!
Тоесть проблема была в том что он выполнял функцию по факту раньше заполнения?
Ответить с цитированием
  #6 (permalink)  
Старый 02.04.2013, 15:37
Профессор
Отправить личное сообщение для Kvark Посмотреть профиль Найти все сообщения от Kvark
 
Регистрация: 02.04.2013
Сообщений: 225

еще одна загвоздка, может также сможеш подсказать, текст "дергает" когда просиходит считывание из файла (а я читаю каждую секунду) - как можно выполнить функцию msgrun только если собщение поменялось?
как я понимаю нужно загрузить в переменую сначала и если значение не равно тому что уже прописано в тегах - тогда выполнить функцию? Или как то по другому это сделать можно?
Ответить с цитированием
  #7 (permalink)  
Старый 02.04.2013, 15:51
Аватар для animhotep
Профессор
Отправить личное сообщение для animhotep Посмотреть профиль Найти все сообщения от animhotep
 
Регистрация: 17.01.2013
Сообщений: 887

Сообщение от Kvark Посмотреть сообщение
О! теперь работает! Спасибо огромное!
Тоесть проблема была в том что он выполнял функцию по факту раньше заполнения?
да, js вычитался вместе с загрузкой страници. а текст позже подгрузился

загрузи текст в переменную и сравнивай
Ответить с цитированием
  #8 (permalink)  
Старый 02.04.2013, 16:51
Профессор
Отправить личное сообщение для Kvark Посмотреть профиль Найти все сообщения от Kvark
 
Регистрация: 02.04.2013
Сообщений: 225

переписал функцию:
function show()
{
	var currentMsg = $('#marquee').html(); 
	$('#marquee').load('msg.txt', function(newMsg) {
		if (currentMsg != newMsg){
			msgrun();
		};
	});
};


работает отлично!

Последний раз редактировалось Kvark, 03.04.2013 в 12:28.
Ответить с цитированием
  #9 (permalink)  
Старый 03.04.2013, 12:26
Профессор
Отправить личное сообщение для Kvark Посмотреть профиль Найти все сообщения от Kvark
 
Регистрация: 02.04.2013
Сообщений: 225

немного усовершенствовал (вдруг кому пригодиться) считываем содержимое файла и проверяем уже загруженое сообщение - если они не равны (проверяю вхождение так как к сообщению применены стили и прямое сравнение не прокатывает) тогда загружаю новое (использую html() потому что сообщение содержит базовое форматирование: цвет, высоту, фонт, наклон, толщину etc.):
function show()
	{ 
		var currentMsg = $('#marquee').html();
		jQuery.get('msg.txt', function(data) 
			{
				var fileMsg = data;
				if (currentMsg.search(fileMsg) == -1)
					{
						$('#marquee').load('msg.txt', function(newMsg) 
						{
							msgrun();
						});
					}
			});			
	};

Последний раз редактировалось Kvark, 03.04.2013 в 12:29.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите как отобразить текст. potkin Общие вопросы Javascript 17 26.10.2017 15:09
скрипт бегущей строки - как сделать строку непрерывной dansury Элементы интерфейса 9 26.01.2013 04:54
Вопрос новичка: Как отобразить функцию на экране Delacrua Общие вопросы Javascript 7 05.05.2010 22:51
как отобразить в окне значения счетчика во время выполнения цикла FOR Алекс97 Общие вопросы Javascript 5 06.09.2008 10:36
Как отобразить угол в графике? Gilman Элементы интерфейса 19 25.07.2008 18:30