3

以下は、私が使用している現在のコードです。

<script type="text/javascript" >
  function rightTopSidebarAd() {
    document.write ("Text to test!");  
  }
</script>

<div style="border:3px solid #FF0000" id="rightTopSidebar">

</div>

<script type="text/javascript">
   $j('#rightTopSidebar').text(rightTopSidebarAd());
</script>

ここにrightTopSidebarAd()、文字列 "Text to test!" を返すか出力したい単純な関数があります。rightTopSidebar関数の結果としてコンテンツが要素内に配置されるようにしたいと考えています。

現在、「Text to test!」と表示されます。text()メソッドが配置される場所であるため、div の直後です。上記の jQuery コードを配置すると、その位置に出力されます。

注:divこれは単なるデモであるため、内部に jQuery コードを配置することはできません。元のページでは、すべてのdiv要素が Web ページ全体に分散され、jQuery 関数が外部 JavaScript ファイルに保存されます。

編集:みんな、私のせい:単純な関数を示しました

  function rightTopSidebarAd() {
    document.write ("Text to test!");  
  }

私の問題を説明するために、あなたが言うように、単純な「リターン」でこの問題は解決しますが、実際の関数はそれほど単純ではありません。OpenX コードを返そうとしています。この関数でそれを行う方法を教えてください:

 function rightTopSidebarAd() {
    document.MAX_ct0 ='{clickurl}';

    var m3_u = (location.protocol=='https:'?'https://one.mydomain.com/www/delivery/ajs.php':'http://one.mydomain.com/www/delivery/ajs.php');
    var m3_r = Math.floor(Math.random()*99999999999);
    if (!document.MAX_used) document.MAX_used = ',';
    document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
    document.write ("?zoneid=15&amp;target=_blank");
    document.write ('&amp;cb=' + m3_r);
    if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
    document.write (document.charset ? '&amp;charset='+document.charset : (document.characterSet ? '&amp;charset='+document.characterSet : ''));
    document.write ("&amp;loc=" + escape(window.location));
    if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
    if (document.context) document.write ("&context=" + escape(document.context));
    if ((typeof(document.MAX_ct0) != 'undefined') && (document.MAX_ct0.substring(0,4) == 'http')) {
        document.write ("&amp;ct0=" + escape(document.MAX_ct0));
    }
    if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
    document.write ("'><\/scr"+"ipt>");
    document.write ("<noscript><a href='http://one.mydomain.com/www/delivery/ck.php?n=a8ed906c&amp;cb={random}' target='_blank'><img src='http://one.mydomain.com/www/delivery/avw.php?zoneid=15&amp;cb={random}&amp;n=a8ed906c&amp;ct0={clickurl}' border='0' alt='' /></a></noscript>");
 }  
4

3 に答える 3

2

ドキュメントに書き込むのではなく、値を返す必要があります。

function rightTopSidebarAd() {
   return "Text to test!";  
}

質問の更新によると、関数は次のようになります。

function rightTopSidebarAd() {
    var valueToReturn = '';
    document.MAX_ct0 ='{clickurl}';

    var m3_u = (location.protocol=='https:'?'https://one.mydomain.com/www/delivery/ajs.php':'http://one.mydomain.com/www/delivery/ajs.php');
    var m3_r = Math.floor(Math.random()*99999999999);
    if (!document.MAX_used) document.MAX_used = ',';
    valueToReturn += "<scr"+"ipt type='text/javascript' src='"+m3_u;
    valueToReturn += "?zoneid=15&amp;target=_blank";
    valueToReturn += '&amp;cb=' + m3_r;
    if (document.MAX_used != ',') valueToReturn += "&amp;exclude=" + document.MAX_used;
    valueToReturn += document.charset ? '&amp;charset='+document.charset : (document.characterSet ? '&amp;charset='+document.characterSet : '');
    valueToReturn += "&amp;loc=" + escape(window.location);
    if (document.referrer) valueToReturn += "&amp;referer=" + escape(document.referrer);
    if (document.context) valueToReturn += "&context=" + escape(document.context);
    if ((typeof(document.MAX_ct0) != 'undefined') && (document.MAX_ct0.substring(0,4) == 'http')) {
        valueToReturn += "&amp;ct0=" + escape(document.MAX_ct0);
    }
    if (document.mmm_fo) valueToReturn += "&amp;mmm_fo=1";
    valueToReturn += "'><\/scr"+"ipt>";
    valueToReturn += "<noscript><a href='http://one.mydomain.com/www/delivery/ck.php?n=a8ed906c&amp;cb={random}' target='_blank'><img src='http://one.mydomain.com/www/delivery/avw.php?zoneid=15&amp;cb={random}&amp;n=a8ed906c&amp;ct0={clickurl}' border='0' alt='' /></a></noscript>";
    return valueToReturn;
} 
于 2012-07-05T16:10:16.267 に答える
1

現在のメソッドは、 ではなく、ドキュメント オブジェクトに書き込もうとします#rightTopSidebar

関数に次の更新を試してください。

function rightTopSidebarAd() {     
    return "Text to test!";     
} 

return を利用することで、文字列をtext()メソッドに渡します。これにより、渡された文字列が目的の要素に書き込まれます。

$(document).ready()さらに、コードを関数で囲むことによって text() メソッドを呼び出す必要があります。

<script type="text/javascript">
function rightTopSidebarAd() {
    return "Text to test!";
} 
$(function(){
    $('#rightTopSidebar').text(rightTopSidebarAd());
});
</script>
<div style="border:3px solid #FF0000" id="rightTopSidebar"></div > 
于 2012-07-05T16:12:14.003 に答える
1

出力する代わりに、関数からテキストを返すだけです。

<script type="text/javascript" >
  function rightTopSidebarAd() {
    return "Text to test!";  
  }
</script>

<div style="border:3px solid #FF0000" id="rightTopSidebar">

</div>

<script type="text/javascript">
   $j('#rightTopSidebar').text(rightTopSidebarAd());
</script>
于 2012-07-05T16:11:07.450 に答える