我正在尝试在同一页面上运行2个脚本,但它们彼此之间不会很好。一个名为TabTop http://www.isdntek.com/tagbot/tabtop.htm,另一个名为Clic * Pic http://www.isdntek.com/tagbot/gallery.htm,均为isdntek。我可以让他们中的任何一个单独运行,但不能同时运行。我环顾四周,试图自己找到这个问题的答案,但无济于事。
我非常感谢可以提供的任何帮助。
谢谢!
答案 0 :(得分:0)
您可以将每个脚本包装在自调用函数中:
(function(){
//As long as you don't use global variables
//the content here is protected from any interaction with the outside
})();
现在,如果两个代码都使用全局变量,那么任务将更加困难。
答案 1 :(得分:0)
RainbowCodeModule6.js文件被两个页面使用,它设置了大量的全局变量(很多因为它没有在函数中声明局部变量),所以很可能有两个脚本尝试使用同一组全局变量,它们会发生冲突。例如(我在这里张贴的包装)
function changeShades(color){ //--update the vertical column of light/dark shades
var ymax=paletteymax
if (!color){return}
for (i=0; i<ymax; i++){
document.getElementById('colorShades'+i).
style.backgroundColor=colorBrightness(color,(ymax-1-i)/(ymax-1))
}
}
上述内容并未将其i
置于本地,取决于全局paletteymax
。我不能说这是不是你的问题,但它表明编程和应用程序架构很差。另一个例子:
function dec2hex(R,G,B) { //--Converts three R-G-B components to
// a single internet hex color
var hexTest="0123456789ABCDEF";
Rd_hi=R/16; Rd_lo=R%16;
Rd=hexTest.substr(Rd_hi,1)+hexTest.substr(Rd_lo,1)
Gn_hi=G/16; Gn_lo=G%16;
Gn=hexTest.substr(Gn_hi,1)+hexTest.substr(Gn_lo,1)
Bu_hi=B/16; Bu_lo=B%16;
Bu=hexTest.substr(Bu_hi,1)+hexTest.substr(Bu_lo,1)
hexval='#'+Rd+Gn+Bu
return hexval;
}
为什么他们决定保留hexTest
本地,但让所有其他变量全球化超出我的范围。变量R
,G
和B
也是全局的,但在这里它们是本地的,因为它们是函数声明中的形式参数。
它还使用document.write在部分中编写表,这绝不是一个好主意。我认为这只是一个写得不好的脚本,找到别的东西。