【问题标题】:Make foreach show one by one within javascript loop?让foreach在javascript循环中一一显示?
【发布时间】:2018-12-28 05:28:54
【问题描述】:

我正在尝试通过在 javascript 循环中使用 foreach 来在页面中显示来自多个类别的最新帖子,但是 foreach 将它们一一显示,如下图所示:

我想在每个元素中显示一个,而不是在每个元素中都显示。

for (var i in books) { //Start JS Code
    var html = '<div class="row"><div class="book_history">';
        // JS Output

    <?php // Start PHP
    $catids = array(39, 37, 2); // Category for test
    foreach ( $catids as $catid ) {

        $my_query = new WP_Query( array(
        'cat' => $catid,
        'ignore_sticky_posts' => 1,
        'posts_per_page' => 1,
        'no_found_rows' => true ) 
        );

        if ( $my_query->have_posts() ) :

                while ( $my_query->have_posts() ) : $my_query->the_post(); ?>
                    html += '<a href="<?php the_permalink(); ?>">»Chapter <?php the_title(); ?></a></div>'; // Javascript Code, Displaying the result of foreach with js
            <?php endwhile;

        endif;

        wp_reset_postdata();
    } ?> // End PHP

        $bookcontainer.append(html); // Insert all result of foreach and js into some element

} // End JS Code

有什么解决办法吗? *JavaScript 的分类顺序是一样的。

【问题讨论】:

标签: javascript php wordpress


【解决方案1】:

由于 PHP 是在服务器端呈现的,因此不能以这种方式将它与 JavaScript 结合起来。

但您可以将 JSON 传递给 JavaScript 以解析结构并将其显示在网站上。

假设您的数据有以下数组:

$data = array(
    array(
        'category_id' => 39,
        'chapters' => array(
            array(
                'link' => 'http://google.de',
                'chapter_name' => 'First chapter',
            )
        ),
    ),
    array(
        'category_id' => 37,
        'chapters' => array(
            array(
                'link' => 'http://google.de',
                'chapter_name' => 'Second chapter',
            )
        ),
    ),
    array(
        'category_id' => 42,
        'chapters' => array(
            array(
                'link' => 'http://google.de',
                'chapter_name' => 'Third chapter',
            )
        ),
    ),
);

您可以使用json_encode($data) 简单地输出此数组的 JSON 表示形式(确保将其回显到 JS 变量中)。

然后您可以使用 JavaScript 轻松读取它。这是一个不错的代码笔:https://codepen.io/YannickFricke/pen/Vqzoob

关于 forEach 函数的简要说明:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

【讨论】:

  • 那么,我得到该类别的最新帖子然后将它们转换为json数组,对吗?
  • 对。您可以将任何结构作为数组传递给json_encodejson_encode 自动确定如何解析数组并为其返回 JSON 表示。然后您可以在网站上处理它并显示您的价值观:) 请不要忘记将答案标记为已接受:)
  • 它仍然显示所有这些,因为我有不同的变量 json,有什么解决方案吗?
  • 您可以使用developer.mozilla.org/de/docs/Web/JavaScript/Reference/… 根据category_id 过滤条目。那么您只有当前 category_id 的条目。对新问题提出一个新问题,并随时在此处发表评论,如果您愿意,我可以看一下:)
  • 我还是不明白,所以我有与其他 json 相同的类别 ID(例如 39、37、2)。我尝试使用 if (history.id == book.id) 如果它相同然后显示输出,但在循环停止后它只显示一次。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多