[Решено] Как отобразить бегущей строкой загруженое собщение?
Привет, я еще пока новенький в 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, время: 07:56. |