Javascript:连续滚动----加入"<!DOCTYPE html PUBLIC..."后不滚动
在制作网页中遇到的问题,因为现在用div+css,所以,网页头部就有了<html xmlns="http://www.w3.org/1999/xhtml">代码,可是有它以后所有的滚动代码都不会滚动。
解决办法一:
删除网页首行的
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
这个确实可以解决, 因为 js代码里有不符合w3c规定的方法和属性. 取消了这个w3c标准限制后 就可以了;可是,你网页中的css布局也就变形了,所以第一种不适合重构的思想
解决办法二:
把 js代码中的 document.body 改为 document.documentElement 就符合w3c标准了, 因此 不需要删除 那一行;
第二种方法还是很完美的
下面是一个例子:
----------------------------------
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script type="text/javascript">
//添加事件响应函数的函数,与本效果无关
function addEventSimple(obj,evt,fn){
if(obj.addEventListener){
obj.addEventListener(evt,fn,false);
}else if(obj.attachEvent){
obj.attachEvent('on'+evt,fn);
}
}
addEventSimple(window,'load',initScrolling);
//保存想要滚动的容器
var scrollingBox;
var scrollingInterval;
//用于记录是否“滚到头”过一次
var reachedBottom=false;
//记录第一次滚到头时候的scrollTop
var bottom;
//初始化滚动效果
function initScrolling(){
scrollingBox = document.getElementById("scrollText");
//样式设置,与滚动基本无关,应该用CSS设置。
scrollingBox.style.height = "120px";
scrollingBox.style.overflow = "hidden";
//滚动
scrollingInterval = setInterval("scrolling()",50);
//鼠标划过停止滚动效果
scrollingBox.onmouseover = over;
//鼠标划出回复滚动效果
scrollingBox.onmouseout = out;
}
//滚动效果
function scrolling(){
//开始滚动,origin是原来scrollTop
var origin = scrollingBox.scrollTop++;
//如果到头了
if(origin == scrollingBox.scrollTop){
//如果是第一次到头
if(!reachedBottom){
scrollingBox.innerHTML+=scrollingBox.innerHTML;
reachedBottom=true;
bottom=origin;
}else{
//已经到头过,只需回复头接尾的效果
scrollingBox.scrollTop=bottom;
}
}
}
function over(){
clearInterval(scrollingInterval);
}
function out(){
scrollingInterval = setInterval("scrolling()",50);
}
</script>
<div id="scrollText">
<a href='#'>1</a><br>
<a href='#'>2</a><br>
<a href='#'>3</a><br>
<a href='#'>4</a><br>
<a href='#'>5</a><br>
<a href='#'>6</a><br>
</div>
-----------------------------------------
怎么样,问题解决了吧,呵呵^_^