图像预加载代码有问题

时间:2014-08-28 01:54:31

标签: javascript

我有这个对象构造函数,它有一个预加载的预加载方法 翻转图像对。

所以,我有两个问题:

1:为什么警报对话框只是在做什么?STR:'没有附加数据? (这种类型的问题通常是由于我的失明。

2:是否可以将this.buttons_on和this.buttons_off视为对象,而不是

数字索引,使用sting索引,因此rollover事件处理程序不需要循环 buttons_on和buttons_off数组得到应该换出的那个;

function _NAV()
     {
      this.list_off = [];
      this.list_on = [];
      this.buttons_on = [];
      this.buttons_off = [];
      this.buttons_all = {}; // .on and .off
      this.button_events = {};
      this.img = true;
      this.img_ids = {}
      this.preLoad = function()
                   {
                    if(document.images)  //creates image object array for preload.
                      {
                       var STR = '';
                       for(var i = 0; i < list_off.length; i++)
                          {
                           var lab_on = list_on[i].replace('\.jpg', '');
                           var lab_off = list_off[i].replace('\.jpg', '');
                           STR += lab_on+'||'+lab_off+"\n";
                           this.buttons_on[i] = new Image();
                           this.buttons_on[i].src = srcPath+list_on[i];
                           this.bottons_on[i].id = img_ids[i];
                           this.buttons_off[i] = new Image();
                           this.buttons_off[i].src = srcPath+list_off[i];
                           this.buttons_off[i].id = img_ids[i];
                          }
                       alert("STR: "+STR);
                      }
                    else
                      {
                       this.img = false
                      }
                   }
      //// ...etc...

这是onload事件触发前的调用

  var rollover = new _NAV();
  rollover.preLoad();

以下是使用的数组

 var srcPath = '../nav_buttons/';
 var list_off = new Array(); // not new Object;
 list_off[0] = "bio_off.jpg";
 list_off[1] = "cd_off.jpg";
 list_off[2] = "home_off.jpg";
 list_off[3] = "inst_off.jpg";
 list_off[4] = "photo_off.jpg";
 list_off[5] = "rev_off.jpg";
 list_off[6] = "samp_off.jpg";


 var list_on = new Array();
 list_on[0] = "bio_on.jpg";
 list_on[1] = "cd_on.jpg";
 list_on[2] = "home_on.jpg";
 list_on[3] = "inst_on.jpg";
 list_on[4] = "photo_on.jpg";
 list_on[5] = "rev_on.jpg";
 list_on[6] = "samp_on.jpg";

 var img_ids = new Array();

感谢您的时间和关注。

1 个答案:

答案 0 :(得分:0)

1

尝试PHPGlue的建议,并在所有成员变量(this.this.list_onthis.list_off)前面添加this.img_ids

你也有一行错字。 bottons_on拼写错误。

this.bottons_on[i].id = img_ids[i];

2:

是的,您可以使用字符串作为索引。只需创建buttons_onbuttons_off个对象而不是数组。

function _NAV()
{
    this.buttons_on = {};
    this.buttons_off = {};
    // For example:
    this.buttons_off[lab_off] = new Image();
}