帮助 - 搜索 - 坛友 - 日历
完整版本: 同一网页里使用2段JAVASCRIPT的问题
大家谈论坛 > 大家坛 > 留学问题求助,解答
gigi
先谢谢坛子里的高人了.我js方面完全是菜鸟水平,请大家不要笑话 emo031.gif

我需要在同一个网页里使用2段一样的js代码,我是把两段js代码原封不动的粘贴进去,结果都不显示,如果只用一段js就可以.可是这个页面必须得有2个js才行...所以刚才上网搜了一些文章,说只要改变控件的id或name,使之不要同名即可.但是我修改了几次都没成功,麻烦大虾们帮忙看看是什么问题,是哪里需要修改?



CODE


<script language="JavaScript1.2">
var delay=5000 //设置廷迟时间
var fcontent=new Array()//修改下面的信息
begintag='<font color=#696969>' //set opening tag, such as font declarations
fcontent[0]="<b>内容1</b><br>内容1"
fcontent[1]="内容2"
fcontent[2]="内容3"
closetag='</font>'

var fwidth=130 //设置宽度
var fheight=290 //设置高度

///No need to edit below this line/////////////////

var ie4=document.all&&!document.getElementById
var ns4=document.layers
var DOM2=document.getElementById
var faderdelay=0
var index=0

if (DOM2)
faderdelay=2000

//function to change content
function changecontent(){
if (index>=fcontent.length)
index=0
if (DOM2){
document.getElementById("fscroller").style.color="rgb(255,255,255)"
document.getElementById("fscroller").innerHTML=begintag+fcontent[index]+closetag
colorfade()
}
else if (ie4)
document.all.fscroller.innerHTML=begintag+fcontent[index]+closetag
else if (ns4){
document.fscrollerns.document.fscrollerns_sub.document.write(begintag+fcontent[index]+closetag)
document.fscrollerns.document.fscrollerns_sub.document.close()
}

index++
setTimeout("changecontent()",delay+faderdelay)
}

// colorfade() partially by Marcio Galli for Netscape Communications.  ////////////
// Modified by Dynamicdrive.com

frame=20;
hex=255  // Initial color value.

function colorfade() {                 
// 20 frames fading process
if(frame>0) {    
hex-=12; // increase color value
document.getElementById("fscroller").style.color="rgb("+hex+","+hex+","+hex+")"; // Set color value.
frame--;
setTimeout("colorfade()",20);    
}
else{
document.getElementById("fscroller").style.color="rgb(0,0,0)";
frame=20;
hex=255
}  
}

if (ie4||DOM2)
document.write('<div id="fscroller" style="border:1px solid black;width:'+fwidth+';height:'+fheight+';padding:2px"></div>')

window.onload=changecontent
</script>
<ilayer id="fscrollerns" width=&{fwidth}; height=&{fheight};><layer id="fscrollerns_sub" width=&{fwidth}; height=&{fheight}; left=0 top=0></layer></ilayer>

anakin
emo050.gif 看得我头都昏了:

这个代码想要实现的是在一个layer里每隔几秒就把内容换掉, 从内容一到内容二到内容三; 内容,内容显示的时间,对浏览器的适应代码,都是Javascript写的, 严格来说, 写得很烂...

你的意思我大概明白,等于是页面上有两块区域,都要使用这个功能, 但是可能内容不同, 那么你光改html里的标记是不够的(注意这个html又是js写出来的)

QUOTE
if (ie4||DOM2)
document.write('<div id="fscroller" style="border:1px solid black;width:'+fwidth+';height:'+fheight+';padding:2px"></div>')


注意看这个div它的id是fscroller, 这个是与前面的js代码里都是对应的,比如

QUOTE
if (ie4||DOM2)
document.write('<div id="fscroller" style="border:1px solid black;width:'+fwidth+';height:'+fheight+';padding:2px"></div>')


那么如果你有一个新的div, 换了一个新标记, 但是还想用前面的js, 前面js里所有对应的id都要变化.

不知道我是否说得明白, 这块JS代码是与这个div绑在一起的, 新div要新代码, 烂就烂在这个js应该是通用的, 把div id作为参数传入.

比如你定义了一个新div为<div id ="tongluoshaocha">, 那么在前面JS的函数里就要加入相同的但是改ID的代码比如

if (ie4||DOM2)
document.write('<div id="fscroller" style="border:1px solid black;width:'+fwidth+';height:'+fheight+';padding:2px"></div>')

在这个if里新加上
document.write('<div id="tongluoshaocha" style="border:1px solid black;width:'+fwidth+';height:'+fheight+';padding:2px"></div>')


当然宽度高度什么你可以在前面自己预设....

emo035.gif 语无伦次, 请不要介意












gigi
实在太感谢anakin了!!! emo039.gif emo039.gif emo039.gif 雪中送炭啊!!

我仔细看了你的解释,是不是意思是div id的名字要区分开?所以我在新改的这段代码里面,把fscroller换成了leftsrc(下面红字部分),可是...还是没成功... emo035.gif 是不是我哪里理解错了?? emo037.gif

另外就是,fscrollerns和fscrollerns_sub这两个数值是否也要和div id对应?比如div id如果叫leftsrc,这个是否也要相应的改成leftsrcns和leftsrcns_sub?




<script language="JavaScript1.2">
var delay=5000 //设置廷迟时间
var fcontent=new Array()//修改下面的信息
begintag='<font color=#696969>' //set opening tag, such as font declarations
fcontent[0]="<b>内容1</b><br>内容1"
fcontent[1]="内容2"
fcontent[2]="内容3"
closetag='</font>'

var fwidth=130 //设置宽度
var fheight=290 //设置高度

///No need to edit below this line/////////////////

var ie4=document.all&&!document.getElementById
var ns4=document.layers
var DOM2=document.getElementById
var faderdelay=0
var index=0

if (DOM2)
faderdelay=2000

//function to change content
function changecontent(){
if (index>=fcontent.length)
index=0
if (DOM2){
document.getElementById("leftscr").style.color="rgb(255,255,255)"
document.getElementById("leftscr").innerHTML=begintag+fcontent[index]+closetag
colorfade()
}
else if (ie4)
document.all.leftscr.innerHTML=begintag+fcontent[index]+closetag
else if (ns4){
document.fscrollerns.document.fscrollerns_sub.document.write(begintag+fcontent[index]+closetag)
document.fscrollerns.document.fscrollerns_sub.document.close()
}

index++
setTimeout("changecontent()",delay+faderdelay)
}

// colorfade() partially by Marcio Galli for Netscape Communications. ////////////
// Modified by Dynamicdrive.com

frame=20;
hex=255 // Initial color value.

function colorfade() {
// 20 frames fading process
if(frame>0) {
hex-=12; // increase color value
document.getElementById("leftscr").style.color="rgb("+hex+","+hex+","+hex+")"; // Set color value.
frame--;
setTimeout("colorfade()",20);
}
else{
document.getElementById("leftscr").style.color="rgb(0,0,0)";
frame=20;
hex=255
}
}

if (ie4||DOM2)
document.write('<div id="leftscr" style="border:1px solid black;width:'+fwidth+';height:'+fheight+';padding:2px"></div>')

window.onload=changecontent
</script>
<ilayer id="fscrollerns" width=&{fwidth}; height=&{fheight};><layer id="fscrollerns_sub" width=&{fwidth}; height=&{fheight}; left=0 top=0></layer></ilayer>
anakin
是添加,不是修改,如果你有多于一个div需要调用这个JS的话, 比如

if (DOM2){
document.getElementById("fscroller").style.color="rgb(255,255,255)"
document.getElementById("fscroller").innerHTML=begintag+fcontent[index]+closetag

document.getElementById("test").style.color="rgb(255,255,255)"
document.getElementById("test").innerHTML=begintag+fcontent[index]+closetag
colorfade()
}


然后下面html里面多一块:

if (ie4||DOM2)
document.write('<div id="fscroller" style="border:1px solid black;width:'+fwidth+';height:'+fheight+';padding:2px"></div>')

document.write('<div id="test" style="border:1px solid black;width:'+fwidth+';height:'+fheight+';padding:2px"></div>')


另外:

else if (ns4){
document.fscrollerns.document.fscrollerns_sub.document.write(begintag+fcontent[index]+closetag)
document.fscrollerns.document.fscrollerns_sub.document.close()
}

以及后面的ilayer,那是针对Netscape浏览器写的代码, 不用管, Netscape有自己对layer的调用定义, 就是那个ns4 = document.layers, 现在没人用了,遗忘它吧.
gigi
谢谢anakin那么晚还及时的回复 emo031.gif


我按照你说的加入了 (请见附件里的partly.js)

CODE
if (DOM2){
document.getElementById("fscroller").style.color="rgb(255,255,255)"
document.getElementById("fscroller").innerHTML=begintag+fcontent[index]+closetag

document.getElementById("test").style.color="rgb(255,255,255)"
document.getElementById("test").innerHTML=begintag+fcontent[index]+closetag
colorfade()
}






QUOTE
if (ie4||DOM2)
document.write('<div id="fscroller" style="border:0px solid black;width:'+fwidth+';height:'+fheight+';padding:2px"></div>')

document.write('<div id="test" style="border:0px solid black;width:'+fwidth+';height:'+fheight+';padding:2px"></div>')





可是页面还是只能调动一个js...所以我干脆又在所有fscroller的后面都加上test的id (附件里的all.js),还是不行...为了方便说明,我把我这两次更改的js文件都打包在附件里了,麻烦anakin再看看...我这方面真的不太开窍 emo037.gif emo039.gif



点击浏览附件
anakin
晕,你看看这个html文件, IE 6下测试通过的.

gigi
anakin..太感激了!!! emo039.gif emo039.gif emo039.gif emo039.gif
gigi
再请教一下anakin,可以两段js代码分别显示不同的文字内容么?就是比如上面那个显示内容1-内容3,底下那个显示内容4-内容6?
anakin
不客气, 铜罗是我女儿干爹呢.

我简单改了一下, 时间的delay还是相同的, 等有时间我重新写一个好一点的给你,可以设定div id,内容以及时间delay的.

bluexmass
anakin好筒子啊!!友情顶帖一个 emo026.gif
gigi
太好了,完全ok了....谢谢! emo050.gif emo050.gif emo050.gif emo050.gif
这是我们主要内容的一个简化版本. 若您想查看包含更多信息和格式化的完整版本请您访问这里.
Invision Power Board © 2001-2008 Invision Power Services, Inc.
Translated By IBForce