0

Visual Studio を使用しています。ローカル ホストでデバッグすると、JavaScript が機能します。機能は非常にシンプルで、マウスオーバーで写真が変更されます。

しかし、ファイルをサーバーにアップロードした後、この機能が機能しません。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、回答を以下に残します)。

私の新しい推測では、ページのどこかに2 番目 mouseOver1();の関数が定義されているか、リンク先の外部 JavaScript ファイルである可能性が高いと思われます。そのため、リンク先のサーバー上のすべての外部 JavaScript ファイルをチェックして、期待どおりであることを確認することをお勧めします。

firefox には firebug を、IE と Chrome では開発者ツール (どちらも F12)をお勧めします。firebug を使用すると、次に起動するJavascript にブレークポイントを設定できるため、呼び出し先を簡単に見つけることができます。


元の回答

私の推測では、オブジェクト ID を混同していると思われます。また、オブジェクトの 1 つを見つけるために静的文字列を使用しています。

私が正しい場合は、これを試してください。私の推測が間違っている場合は、喜んで回答を削除します。

(注、私はに変更iPhotoMainしましたphoto1

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 に答える