Скрипт для беглого текста на JavaScript

14 Сен
2011

Примечательно что набирается как бы по буковке, в таком же порядке удаляется и возвращается.
Прошу учесть что этот тег не входит в спецификацию HTML и его наличие приведет к невалидному коду.
Всем приятного использования, надеюсь кому нибудь и пригодится. Не зря же писал.
Собственно вот он.:

/*
Библиотека MonsterScript - MS
Методы:
MS.textMove(elementId,text,phase,speed)
{
elementId - Id элемента на который вешается эффект
text - текст который будет бегать, если передаётся массив, то текст каждого элемента будет выведен по очереди
phase - если true, то текст будет бегать в цикле вперед и назад,false - текст будет бежать до конца и остановится(по умолчанию - false)
speed - необязательный параметр - по умолчанию 140 скорость
}
*/
MS = {
start: 0,
end: 0,
text: 'lol',
currentText: '',
id: 'lol',
step: 0,
status: false,
phase: false,
forward: function(el,speed)
{
el.innerHTML = this.text.slice(this.start,this.end);
this.end++;
if(this.end >= this.text.length + 1)
{
clearInterval(this.status);
//alert('Interval Stoped');
//alert(this.phase)
if(this.phase == true)
{
this.status = setInterval(function(){MS.backward(el,speed)},speed);
}
}
},
backward: function(el,speed)
{
this.end--;
el.innerHTML = this.text.slice(this.start,this.end);
if(this.end <= 0)
{
clearInterval(this.status);
//alert('finish')
//alert(this.end)
this.textMove(this.id,this.text,speed);
}
},
textMove: function(id,text,speed,phase)
{
if(typeof phase == 'boolean') this.phase = phase;
if(!speed || isNaN(speed)) speed = 140;
//alert(this.currentText.join)
if(this.currentText.join == undefined)
{
this.currentText = text;
this.text = this.currentText;
//alert(this.currentText[1])
}
//alert(this.currentText.length)
if(this.currentText.join != undefined && this.phase == true)
{
while(this.step < text.length)
{
//alert(this.step)
this.text = this.currentText[this.step];
this.step++;
if(this.step == this.currentText.length) this.step = 0;
break;
}
}
else
{
//alert(this.currentText.join("--"));
if(!text) this.text = 'Текст по умолчанию';
//Если нужно чтобы элементы массива целиком добавлялись
//Вместо букафки, то убираем toString();
// в случае указания параметра false, и добавиви массив в текст
// то тут можно вместо запятой добавить желаемый значёк
try
{
this.text = this.currentText.join(', ').toString();
}
catch(e)
{
this.text = this.currentText.toString();
}
}
if(!id) return alert('Укажите элемент в котором будет бегать строка!');
if(!document.getElementById(id)) return alert('Элемент с таким id ненайден');
this.id = id;
var el = document.getElementById(this.id);
this.status = setInterval(function(){MS.forward(el,speed)},speed);
}
}
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх