i是个全局变量,但同时还是个全局活动对象,ajax的回调函数执行时只会取i的最终值。即:
不管你划过aAllPrice[0]还是aAllPrice[1]、[2]....,ajax回调函数中的“[i]”始终是“[aAllPrice.length]”,“allAllPrice[aAllPrice.length]”当然不存在,所以是undefined。修一下即可://红色为对照原代码修改或添的部分
for (i = 0; i < aAllPrice.length; i++)
  {
      aAllPrice[i].index = i;
      (function(n){
          aAllPrice[n].onmouseover = function ()
          {
    //this.style.cursor = 'default';     ajax(systemUrl + '/mytests/getAllPrice/' + this.getAttribute('value'), function (data) {
alert(aAllPrice[n].innerHTML);
    });
          }
      })(i);
  }

解决方案 »

  1.   

    重新发下:for (i = 0; i < aAllPrice.length; i++)
      {
          aAllPrice[i].index = i;
          (function(n){
              aAllPrice[n].onmouseover = function ()
              {
                //this.style.cursor = 'default';
                ajax(systemUrl + '/mytests/getAllPrice/' + this.getAttribute('value'), function (data) {
                  alert(aAllPrice[n].innerHTML);
                });
              }
          })(i);
      }
      

  2.   

    你好,耽误下你的时间啊.红色标记的方法是什么方法啊,没见过,不过刚才有个人也教我这么写,说是js的闭包.还有就是想请教下你想系统的学js应该从何学起呢
      

  3.   


    首先,你这个并不是闭包,主要是由于js的执行机制和活动对象的特性。
    其次,红色部分主要是添加了一个匿名函数自执行 并且在执行的时候把当前i作为参数传入函数。
    关于“闭包”和“活动对象”自己google一下,网上有很多资料。至于系统的学习js,每个人的学习方法 习惯都不同,不过基本上主要是多看书,多动手,多看一些优质博客和论坛。你可以发个帖子征求下建议  看看大家都是怎么学的?
      

  4.   

    你也可以将i做为参数传导进ajax访问的地址中,然后在data中再将它返回