[Решено] Как отобразить бегущей строкой загруженое собщение?
Привет, я еще пока новенький в 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> оно прекрасно отображаеться и показывает бегущей строчкой. Что нужно подправить чтоб оно срабатывало после загрузки собщения из файла? |
функция load будет работать только на сервере, локально из файла не подгрузит
|
все прекрасно она грузит, вопрос не в этом, после загрузки не двигаеться, но показываеться, словно что то мешает выполению функции msgrun()
|
текст вставлен после загрузки страници, похоже js его не видит
а если так? $('#marquee').load('msg.txt', function() { msgrun(); }); |
О! теперь работает! Спасибо огромное! :)
Тоесть проблема была в том что он выполнял функцию по факту раньше заполнения? |
еще одна загвоздка, может также сможеш подсказать, текст "дергает" когда просиходит считывание из файла (а я читаю каждую секунду) - как можно выполнить функцию msgrun только если собщение поменялось?
как я понимаю нужно загрузить в переменую сначала и если значение не равно тому что уже прописано в тегах - тогда выполнить функцию? Или как то по другому это сделать можно? |
Цитата:
загрузи текст в переменную и сравнивай |
переписал функцию:
function show() { var currentMsg = $('#marquee').html(); $('#marquee').load('msg.txt', function(newMsg) { if (currentMsg != newMsg){ msgrun(); }; }); }; работает отлично! :) |
немного усовершенствовал (вдруг кому пригодиться) считываем содержимое файла и проверяем уже загруженое сообщение - если они не равны (проверяю вхождение так как к сообщению применены стили и прямое сравнение не прокатывает) тогда загружаю новое (использую 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(); }); } }); }; |
Часовой пояс GMT +3, время: 10:58. |