1

tl;dr: 最初の関数を他の関数で再利用するにはどうすればよいですか? 他の関数で呼び出された場合、未定義を返し続けます。

私はオンライン ヘルプを作成しています (私はプログラマーではありません)。残念ながら、Adobe RoboHelp によってフレームセットで出力されます。以下の最初の関数 (getURL) を使用して、他の関数で再利用できる URL を動的に構築したいと考えています。たとえば、ある関数で「a」引数をグラフィックとして渡したり、それを使用してフレームセット内のページを別の関数で mailto: リンクとして送信したりします。

私が抱えている問題は、他の関数内から getURL 関数を呼び出すことです。fullURL 値が未定義として返されています。

function getURL(a) {
    var frameURL = window.frames[1].frames[1].document.location, 
    frameareaname = frameURL.pathname.split('/').slice(4, 5), 
    frameprojname = frameURL.pathname.split('/').slice(6, 7),
    protocol_name = window.location.protocol,
    server_name = window.location.host,
fullURL = protocol_name + '//' + server_name + '/robohelp/robo/server/' + frameareaname + '/projects/' + frameprojname + '/' + a;
return fullURL;
}

このように関数を呼び出すと正常に動作しますが、関数内に配置するとうまくいきません:

 getURL('light_bulb.png');
 console.log(fullURL);

この関数を別の関数で再利用するにはどうすればよいですか? たとえば、fullURL は背景画像にする必要があります。

  $('.Graphic, .GraphicIndent, .Graphic3rd, .Graphic4th').not('.Graphic-norollover').mouseover(function()
  {
    var imgWidth = $(this).children('img').width();
    $(this).css('background', 'url(' + fullURL + ') 50% 50% no-repeat #000');
    $(this).css('width', imgWidth);
    $(this).children('img').fadeTo(750, '.4');
    $(this).children('img').attr('alt', 'Click to view full-size graphic');
    $(this).children('img').attr('title', 'Click to view full-size graphic');
  });

ありがとう!

4

2 に答える 2