2013-06-19 87 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