0

我在我的网站上使用 Jason Mayes Twitter JS,一切正常,直到我使用 php 条件语句。

我在我的页面中包含了 Jason 的 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是否有某种限制阻止显示两个以上?如果我删除条件代码,三个显示就好了......有什么想法吗?

谢谢,
乔什

4

2 回答 2

2

So it appears the problem with your code is that your PHP code changes the HTML output meaning some elements are removed.

Because of this, the 3 lines of JavaScript at the end of the JavaScript file used to call the component, are expecting these DOM elements to be there all the time.

You need to also make these conditional. For example if you had jQuery on your site you could use:

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

Same for the other two of course. This way the JavaScript is only executed if the DOM element exists, so an error is not thrown for trying to access something that does not exist yet!

于 2013-06-19T22:35:26.347 回答
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);

我在我的脑海中用以下内容替换了这些行,head - 在我的 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>

就是这样,现在一切都按预期工作,一个功能而不是两个,我知道为什么!

谢谢杰森!!在我们开始工作之前,我感谢所有的来回!

谢谢,
乔什

于 2013-06-19T22:43:07.307 回答