JS文字滚动效果

没什么技术难度,主要是Array对象的push()和shift()方法的调用。

一般的实现方法,即直接分别在id为start和stop的button上添加onclick事件,然后执行相应的函数:

html:

<div id="test">这里是滚动的文字!</div>
<p class="btns"><button type="button" id="start">开始</button><button type="button" id="stop">结束</button></p>

实现方法:

function $(id) {
	return document.getElementById(id);
};

window.onload = function() {
	var t = null;
	$("start").onclick = function() {
		clearInterval(t);
		var s = $('test').innerText.split('');
		t = setInterval(function() {
			s.push(s.shift());//滚动
			$('test').innerText = s.join('');
		}, 300);
		$("start").disabled = true;//单击开始按钮后禁用开始按钮
		$("stop").disabled = false;//单击开始按钮后启用结束按钮
	};
	$("stop").onclick = function() {
		clearInterval(t);//清除间歇调用
		$("start").disabled = false;
		$("stop").disabled = true;
	};
}

另外再使用面向对象的编程方法,主要考虑可扩展性:

function $(id) {
	return document.getElementById(id);
};

function ScrollText(text, fn, time) {
	this.text = text.split('');
	this.fn = fn;
	this.time = time || 300;
}
ScrollText.prototype.start = function() {
	var s = this.text;
	var fn = this.fn;
	clearInterval(this.interval);
	this.interval = setInterval(function() {
		s.push(s.shift());
		fn(s.join(""));//这个函数是处理传进来的字符串的,指定将它作为某个对象的文本
	}, this.time);
};
ScrollText.prototype.stop = function() {
	clearInterval(this.interval);
};

window.onload = function() {
	var txt = $("test").innerHTML;
	var scrollText = new ScrollText(txt, function(t) {
		$("test").innerHTML = t;
	});
	/*var txt = $("test").innerHTML;
	var scrollText = new ScrollText(txt, function(t) {
		document.title = t;
	});*/
	
	$("start").onclick = function() {
		scrollText.start();
		$("start").disabled = true;//单击开始按钮后禁用开始按钮
		$("stop").disabled = false;//单击开始按钮后启用结束按钮
	};
	$("stop").onclick = function() {
		scrollText.stop();
		$("start").disabled = false;
		$("stop").disabled = true;
	};
}

进行扩展后,可以对任意的文本设置滚动。

posted @ 2011-02-28 00:02  chemdemo  阅读(2283)  评论(0编辑  收藏  举报