最近我一直在尝试为我的博客帖子创建自己的滑块,但我无法让它工作。我在网上尝试了不同的代码,但没有一个可以旋转我的列表项(这些是通过post循环创建的)。下面是我尝试的代码W3Schools 但它显示了一个错误Uncaught TypeError: Cannot read property \'style\' of undefined at carousel
这是我的函数。我在索引上调用的php。php显示帖子:
function displayBlogSlider() {
$args = array(
\'posts_per_page\' => 3
);
// the query
$the_query = new WP_Query( $args );
?>
<?php if ( $the_query->have_posts() ) : ?>
<div class="slider js--slider">
<!-- pagination here -->
<ul class="slider-inner js--slider-inner">
<!-- the loop -->
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<li class="slider-item js--slider-item">
<div class="slider-info">
<?php blog_set_featured_background(); ?>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<p>By <a href="<?php the_author(); ?>"><?php the_author(); ?></a></p>
<p><?php the_date(); ?> — <a href="#"><?php comments_number(); ?></a> ● <a href="#"><?php the_category(); ?></a></p>
</div>
</li>
<?php endwhile; ?>
</ul>
<!-- end of the loop -->
<div class="slider-nav">
<a href="#" class="nav-prev js--nav-prev"><</a>
<a href="#" class="nav-next js--nav-next">></a>
</div>
</div>
<!-- pagination here -->
<?php wp_reset_postdata(); ?>
<?php else : ?>
<p><?php esc_html_e( \'Sorry, no posts matched your criteria.\' ); ?></p>
<?php endif;
}
function blog_set_featured_background() {
$image_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), full, false );
if ($image_url[0]) {
?>
<style>
.slider-inner {
height:100%;
margin:0!important;
}
.slider-inner {
background: linear-gradient( rgba(0, 0, 0, 0.20), rgba(0, 0, 0, 0.80)), url(<?php echo $image_url[0]; ?>) #000 no-repeat;
background-position: center;
background-size: cover;
}
</style>
<?php
}
}
下面是我的javascript,用于使列表项旋转(类似于W3S):
var myIndex = 0;
carousel();
function carousel() {
var i;
var listItem = document.getElementsByClassName("js--slider-item");
for(i = 0; i < listItem.length; i++) {
listItem[i].style.display = "none";
}
myIndex++;
if(myIndex > listItem.length) {
myIndex = 1;
}
listItem[myIndex-1].style.display = "block";
setTimeout(carousel, 3000);
}
如果有更好的方式为wordpress博客帖子制作旋转木马,我会接受所有建议和信息。
But 我想自己创建它,我不想使用插件。此外,我更喜欢纯javascript,因为我还在学习它。
我想在这里创建类似于第一个滑块的东西-https://manohara.incredibbble.com/
SO网友:inarilo
滑块可能正在工作,但只显示最后一个图像,因为您正在重复定义(并因此覆盖)同一个类slider-inner
. 此外,您将类和图像分配给列表,而不是每个列表项。相反,只需定义一次类(最好是在css文件中),并使用id标识每张幻灯片:
CSS:
.slider-inner {
height:100%;
margin:0!important;
}
.slider-item {
background-position: center;
background-size: cover;
}
对于每个列表项:
<li id="slider-item-<?php echo $post->ID; ?>" class="slider-item js--slider-item">...</li>
要添加图像,请执行以下操作:
function blog_set_featured_background() {
$image_url = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), full, false );
if ($image_url[0]) {
?>
<style>
#slider-item-<?php echo $post->ID; ?> {
background: linear-gradient( rgba(0, 0, 0, 0.20), rgba(0, 0, 0, 0.80)), url(<?php echo $image_url[0]; ?>) #000 no-repeat;
}
</style>
<?php
}
}