如何调用数组

时间:2011-09-10 13:36:02

标签: javascript

我有一个很多页面的网站,它还有一个样式表切换器,因此用户可以选择自己的自定义图形和布局(css文件)

这些css文件在图形中下载,但仅在点击呼叫时...即使页面已经打开了几秒钟或几分钟,当时图形可以加载进行即时切换。

所以我实现了以下代码:

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

</SCRIPT>


<body onLoad="MM_preloadImages('/corporate/heading.png','/creative/heading.png','/earth/heading.png','/under-the-sea/heading.png','/space-and-stars/heading.png','/classical/heading.png','/corporate/document.jpg','/space-and-stars/document.png','/creative/document.jpg','/earth/background.jpg','/under-the-sea/background.jpg','/classical/document.png','/classical/background.jpg','/under-the-sea/document.png','/corporate/home-graphics.png','/earth/content.jpg','/earth/footer.jpg','/earth/home-graphics.png','/under-the-sea/home-graphics.png','/creative/home-graphics.png','/space-and-stars/background.jpg','');">

它非常有效 - 您可以打开页面,只要注意到可以单击样式的位置,就可以立即轻松地为样式切换样式所花费的时间相同。

但是,该网站已经增长,现在每个html文件中都有相当多的页面。香港专业教育学院刚刚添加了“创意2”风格,这导致上述需要更新........维护此代码对于编辑每一页都是低效的。

所以我一直在寻找如何从外部页面调用一个数组,但没有得到以下工作,我不知道足够的JavaScript来诊断原因。

头脑中的

<script>

LoadStyles = function(pageName){
   var head= document.getElementsByTagName('head')[0]; // get head element
   var script= document.createElement('script'); // create new script element
   script.type= 'text/javascript'; // set type
   script.onreadystatechange= function () { 
      if (this.readyState == 'complete') 
           MM_preloadImages(imgArray) ; // call when script is loaded
   }

   script.src= pageName; // set script source path
   head.appendChild(script); // append to body

}

</script>

使用页面路径的正文载入:

<body onLoad="LoadStyles('/js/styles-code.js');">

样式-code.js ...

imgArray = [
'/corporate/background.jpg',
'/creative/background.jpg',
'/earth/background.jpg',
'otherresourcenames.jpg'];

Pls可能会比我指出的更有经验和知识的人在这里看起来不合适吗?

非常感谢

威尔

1 个答案:

答案 0 :(得分:2)

使用apply将字符串作为参数传递给MM_preloadImages函数,而不是将Array作为函数的唯一参数传递。

var imgArray = [
    '/corporate/background.jpg', 
    '/creative/background.jpg', 
    '/earth/background.jpg', 
    'otherresourcenames.jpg'
];

MM_preloadImages.apply(this, imgArray);

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/function/apply