0

我正在使用 Visual Studio。如果我在本地主机上调试它,我的 javascript 正在运行,功能非常简单,在 mouseOver 上更改照片。

但是在我将文件上传到我的服务器后,此功能不起作用。我在 Chrome、Firefox、IE 和 Safari 上试过:

function mouseOver1()
{
    var category1 = document
         .getElementById('ctl00_ContentPlaceHolder1_lblItemID')
         .innerHTML + '_1.jpg';

    document
      .getElementById('<%= iPhotoMain.ClientID.Replace("$","_") %>')
      .src = 'photos/product/' + category1;
}

<img id ="photo1" 
     src ="photos/product/noImage.gif" 
     onmouseover="mouseOver1();"  
     class="thumbpic" 
     runat ="server" />
4

2 回答 2

2

根据OP的评论,我的原始答案部分不正确(尽管我仍然认为您不应该使用静态ID lblItemID- 所以将在下面留下答案)。

我的新猜测是您在页面的某处定义了第二个 mouseOver1();函数,或者更可能是您链接到的外部 JavaScript 文件。因此,我建议您检查服务器上链接到的所有外部 JavaScript 文件,并确保它们符合您的预期。

我可以推荐firebug 的 firebug或 IE 和 Chrome 下的开发者工具(两者都按 F12)。使用 firebug,您可以在下一个要触发的 Javascript 上设置断点,这样您就可以轻松找出调用的去向


原始答案

我的猜测是你混淆了你的对象 ID。您还使用静态字符串来查找您的对象之一。

如果我是正确的,请试试这个 - 如果我的猜测不正确,我会很乐意删除我的答案。

(注意,我已更改iPhotoMainphoto1

function mouseOver1(){
  var category1 = document
    .getElementById('<%=lblItemID.ClientID%>')
    .innerHTML + '_1.jpg';

  document
    .getElementById('<%=photo1.ClientID%>')
    .src = 'photos/product/' + category1;
}
于 2012-07-22T09:50:07.477 回答
0

也许在服务器上你的页面(数据)比你的本地慢。所以尝试使用 javascript 的回调函数。像这样..

    var category1 = "";

    function mouseOver1(callback)
    {
        category1 = document
             .getElementById('ctl00_ContentPlaceHolder1_lblItemID')
             .innerHTML + '_1.jpg';

        callback();
    }

    function mouseOver2()
    {
       document
          .getElementById('<%= iPhotoMain.ClientID.Replace("$","_") %>')
          .src = 'photos/product/' + category1;
    }

<img id ="photo1" src ="photos/product/noImage.gif" onmouseover="mouseOver1(mouseOver2);" class="thumbpic"  runat ="server" />
于 2012-07-22T09:49:18.530 回答