不是很懂JS,研究了好久,发现问题的根源,FOR DZ LITE 的
公告那部分的HTML代码是这样的
复制内容到剪贴板
代码:
<div id=marqueeBox onmouseover="clearInterval(marqueeInterval[0])" onmouseout="marqueeInterval[0]=setInterval(\'startMarquee()\',marqueeDelay)">
<div>公告内容1</div>
<div>公告内容2</div>
</div>不居中的原因是外部那一层DIV(marqueeBox)定义的高度跟内部DIV层(<div>公告内容1</div>)的高度不一致引起的,因此只须在样式里定义,让他们的高度一致就可以了
测试代码
复制内容到剪贴板
代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<link rel="stylesheet" type="text/css" id="css" href="http://www.freediscuz.net/bbs/forumdata/cache/style_3.css">
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
var marqueeInterval=new Array();
var marqueeId=0;
var marqueeDelay=3000;
var marqueeHeight=20;
function initMarquee() {
var str=marqueeContent[0];
document.write('<style type="text/css">#marqueeBox{margin:0;padding:0;height:'+marqueeHeight+'px;overflow:hidden;}#marqueeBox div{margin:0;padding:0;line-height:'+marqueeHeight+'px;}</style>');
document.write('<div id=marqueeBox onmouseover="clearInterval(marqueeInterval[0])" onmouseout="marqueeInterval[0]=setInterval(\'startMarquee()\',marqueeDelay)"><div>'+str+'</div></div>');
marqueeId++;
marqueeInterval[0]=setInterval("startMarquee()",marqueeDelay);
}
function startMarquee() {
if(marqueeId>=marqueeContent.length) marqueeId=0;
var str=marqueeContent[marqueeId];
marqueeId++;
if($('marqueeBox').childNodes.length==1) {
var nextLine=document.createElement('DIV');
nextLine.innerHTML=str;
$('marqueeBox').appendChild(nextLine);
} else {
$('marqueeBox').childNodes[0].innerHTML=str;
$('marqueeBox').appendChild($('marqueeBox').childNodes[0]);
$('marqueeBox').scrollTop=0;
}
clearInterval(marqueeInterval[1]);
marqueeInterval[1]=setInterval("scrollMarquee()",20);
}
function scrollMarquee() {
$('marqueeBox').scrollTop++;
if($('marqueeBox').scrollTop%marqueeHeight==(marqueeHeight-1)){
clearInterval(marqueeInterval[1]);
}
}
function $(id) {
return document.getElementById(id);
}
</SCRIPT>
<div class="maintable">
<table cellspacing="1" cellpadding="4" width="98%" align="center" class="tableborder">
<tr class="header"><td colspan="3">Discuz! Board 公告</td></tr>
<tr class="altbg2" align="center">
<td colspan="3" align="center">
<script language="javascript">
var marqueeContent=new Array();
marqueeContent[0]='<a href="announcement.php?id=18#18" target="_blank"><span class="bold"><font color="red">FreeDiscuz! 调整完成,所有用户安全提问与回答均已清空</font></span> (2007-1-15)</a>';
marqueeContent[1]='<a href="announcement.php?id=15#15" target="_blank"><span class="bold"><a href="viewthread.php?tid=2257" target="_blank"><font color="blue">Discuz! Lite 1.0 RC 1正式发布</font></a></span> (2007-1-4)</a>';
marqueeContent[2]='<a href="announcement.php?id=12#12" target="_blank"><span class="bold"><font color="FF0000">FreeDiscuz! 全面禁止广告</font></span> (2006-10-16)</a>';
initMarquee();
</script>
</td></tr></table><br></div>
</BODY>
</HTML>引用:
document.write('<style type="text/css">#marqueeBox{margin:0;padding:0;height:'+marqueeHeight+'px;overflow:hidden;}#marqueeBox div{margin:0;padding:0;line-height:'+marqueeHeight+'px;}</style>');
这里把原来定义的样式去掉了,改为在这里写样式表控制,红色部分就是为了让DIV层的高度相一致,并且实现文字居中显示,这个高度可以在var marqueeHeight=
20;里修改
common.js for Discuz! Lite 1.0 RC 1 [070115更新]