2013-06-19 3 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 некоторые элементы удаляются.

Из-за этого 3 строки JavaScript в конце файла JavaScript, используемые для вызова компонента, ожидают, что эти элементы DOM будут там все время.

Вы также должны сделать эти условные. Например, если у вас был jQuery на вашем сайте, вы можете использовать:

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

То же самое для двух других конечно. Таким образом, JavaScript выполняется только в том случае, если существует элемент DOM, поэтому ошибка не возникает, если вы пытаетесь получить доступ к тем, что еще не существует!

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> 

Вот и все, теперь все работает как ожидается, с одной функцией вместо двух, и я знаю почему!

Thanks Jason !! Я ценю все прошлое, пока мы не работаем!

Thanks,
Josh

Смежные вопросы