Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
让foreach在javascript循环中逐个显示?_Javascript_Php_Wordpress - Fatal编程技术网

让foreach在javascript循环中逐个显示?

让foreach在javascript循环中逐个显示?,javascript,php,wordpress,Javascript,Php,Wordpress,我试图通过在javascript循环中使用foreach来显示页面中多个类别的最新帖子,但是foreach会逐个显示它们,如下图所示: 我想在每个元素中显示一个,而不是每个元素中的所有元素 for (var i in books) { //Start JS Code var html = '<div class="row"><div class="book_history">'; // JS Output <?php // Sta

我试图通过在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
for(书籍中的var i){//Start JS代码
var html='';
//JS输出
html+='';//Javascript代码,用js显示foreach的结果
//结束PHP
$bookcontainer.append(html);//将foreach和js的所有结果插入到某个元素中
}//结束JS代码
有什么解决办法吗?
*JavaScript的分类顺序是相同的。

因为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\u encode($data)
输出此数组的JSON表示(确保将其回送到JS变量中)

然后,您可以使用JavaScript轻松地读出它。这是一个很好的代码笔:


关于forEach函数的一个简短说明:

在一段代码中混合使用JS+HTML+PHP是一种非常糟糕的做法,您可以使用示例来代替它。因此,我获得了该类别的最新帖子,然后将它们转换为json数组,对吗?对。您可以将任何结构作为数组传递给
json\u encode
json_encode
自动确定如何解析数组并返回数组的json表示形式。然后你可以在网站上处理它,并显示你的值:)请不要忘记将答案标记为已接受:)它仍然显示所有答案,因为我有不同的变量json,有什么解决方案吗?你可以使用。那么您只有当前类别的条目。\u id。用新问题问一个新问题,并在这里随意评论,这样如果您愿意,我可以看一下:)我仍然不明白,所以我与其他json有相同的类别id(例如39、37、2)。我尝试使用if(history.id==book.id),如果它是相同的,则显示输出,但在循环停止后只显示一次。