javascript不会在live上执行

时间:2012-07-22 09:15:50

标签: c# javascript

我正在使用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" />

2 个答案:

答案 0 :(得分:2)

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

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

我可以推荐firebug for firefox或IE和Chrome下的开发者工具(两者都是F12)。使用firebug,您可以在 next Javascript上断点,这样您就可以轻松找到呼叫的去向


原始答案

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

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

(注意,我已将iPhotoMain更改为photo1

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

  document
    .getElementById('<%=photo1.ClientID%>')
    .src = 'photos/product/' + category1;
}

答案 1 :(得分: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" />