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(),我想返回或打印字符串“要测试的文本!”。我希望该函数能够将内容放置在rightTopSidebar元素内。

目前它打印“要测试的文本!” 就在 div 之后,因为那是text()放置方法的地方。如果我将 jQuery 代码放在上面,那么它会打印在那个位置。

注意:我不能把 jQuery 代码放在里面,div因为这只是一个演示。在原始页面中,所有div元素都将散布在网页周围,并且我将 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

只需从您的函数返回文本而不是打印它:

<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 回答
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 回答