2013-06-19 54 views
0

我在我的网站上使用Jason Mayes Twitter JS,并且一切正常,直到我使用php条件语句。Twitter API仅显示两个

我已经包括杰森在我的页面的JavaScript看起来像:http://jsfiddle.net/4utuY/1/

的小提琴作品,当我把它添加到我的网站一切正常,直到我用一个有条件的PHP这将导致第三鸣叫消失。代码如下:

<?php if (is_page("Youth")) { ?> 
     <p><strong>Follow us: <a href="https://twitter.com/brandork">@brandork</a></strong></p> 
     <div id="tweets"></div> 
     <hr /> 
    <?php } ?> 
    <p><strong>Follow us: <a href="https://twitter.com/epopengate">@epopengate</a></strong></p> 
    <div id="talk"></div> 
    <?php if (!is_page("Youth")) { ?> 
     <hr /> 
     <p><strong>Follow us: <a href="https://twitter.com/nazcompassion">@nazcompassion</a></strong></p> 
     <div id="tweets2"></div> 
    <?php } ?> 

我创建了一个叫做twitterFetcher.fetch2的第三个和条件中的另一种功能,但我为什么要这么做? JS有防止超过两个显示的限制吗?如果我删除条件代码的三个显示就好了......有什么想法?

感谢,
乔希

回答

2

因此,它似乎与你的代码的问题是,你的PHP代码更改HTML输出含义的一些元素被移除。因此,用于调用组件的JavaScript文件末尾的3行JavaScript期望这些DOM元素始终存在。

您还需要使这些条件。例如,如果您有jQuery的在网站上,你可以使用:

if ($('#tweets').length > 1) { 
    twitterFetcher.fetch('347356802423345152', 'tweets', 1, true); 
} 

同为当然的其他两个。这种方式只有在DOM元素存在时才会执行JavaScript,因此不会抛出错误来尝试访问尚不存在的东西!

0

我有JavaScript作为外部文件 - 我最终从我的JS文件中删除以下行:

twitterFetcher.fetch('347355465329565696', 'talk', 1, true, true, false); 
twitterFetcher.fetch('347356802423345152', 'tweets', 1, true, true, false); 
twitterFetcher.fetch('347364680194465794', 'tweets2', 1, true, true, false); 

我替换成我的头下面,头部的线 - 右边的链接下方我的JS文件:

<script type="text/javascript"> 
     $(document).ready(function(){ 
      if ($('#tweets').length > 0) { 
       twitterFetcher.fetch('347356802423345152', 'tweets', 1, true, true, false); 
      } 
      if ($('#talk').length > 0) { 
       twitterFetcher.fetch('347355465329565696', 'talk', 1, true, true, false); 
      } 
      if ($('#tweets2').length > 0) { 
       twitterFetcher.fetch('347364680194465794', 'tweets2', 1, true, true, false); 
      } 
     }); 
    </script> 

就是这样,现在一切正常,用一个函数,而不是两个,我知道为什么!

谢谢杰森!我感谢所有来回,直到我们开始工作!

谢谢,
Josh