【问题标题】:Making a Javascript slideshow with wordpress使用 wordpress 制作 Javascript 幻灯片
【发布时间】:2017-01-14 02:27:32
【问题描述】:

我正在迈出学习编程的第一步。我做了一些关于 html、css、javascript、php 和 MySql 的课程,现在,我决定在构建 Wordpress 子主题的同时继续从实践中学习。

问题是我正在构建图像幻灯片。为了开始了解如何制作它,我发现了这个:http://www.w3schools.com/w3css/w3css_slideshow.asp

这是一个简单实用的幻灯片。这太好了!但是如果我想在 Wordpress 中实现它会出现一些问题。

我创建了一个帖子类型,并使用高级自定义字段插件创建了一个重复字段。因此,该代码在 Wordpress 中将是这样的:

<?php get_header(); ?>

<script>

var slideIndex = 1;
showDivs(slideIndex);

function plusDivs(n) {
  showDivs(slideIndex += n);
}

function showDivs(n) {
  var i;
  var x = document.getElementsByClassName("mySlides");
  if (n > x.length) {slideIndex = 1}
  if (n < 1) {slideIndex = x.length}
  for (i = 0; i < x.length; i++) {
     x[i].style.display = "none";
  }
  x[slideIndex-1].style.display = "block";
}

</script>


<?php


if( have_rows('image') ):

    while ( have_rows('image') ) : the_row();


                if( get_sub_field('subimage') ) :

            echo '<div class="mySlides">' . get_sub_field('subimage') . '</div>';
          endif;

    endwhile;


endif;

?>

<a class="home-btn-left" onclick="plusDivs(-1)">❮</a>
<a class="home-btn-right" onclick="plusDivs(1)">❯</a>


</div>

<?php get_footer(); ?>

效果几乎完美!但是现在我有两个问题:

1) 一旦我加载我的页面以查看模板。我看到第一张图像覆盖了最后一张图像。我不知道为什么:

2) 幻灯片结束时有一张空白幻灯片。看起来我有一个空子字段,但不,我没有空子字段。我不知道为什么会有一张空的幻灯片。

你有什么建议吗?

谢谢

【问题讨论】:

    标签: javascript php html wordpress advanced-custom-fields


    【解决方案1】:

    我认为问题在于您的get_footer() 之前的最后一个关闭DIV &lt;/div&gt;。这是一个导致浏览器失败的简单 html 标记错误。您的代码应如下所示:

    <?php get_header(); ?>
    
    <script>
    
    var slideIndex = 1;
    
    function plusDivs(n) {
      showDivs(slideIndex += n);
    }
    
    function showDivs(n) {
      var i;
      var x = document.getElementsByClassName("mySlides");
      if (n > x.length) {slideIndex = 1}
      if (n < 1) {slideIndex = x.length}
      for (i = 0; i < x.length; i++) {
         x[i].style.display = "none";
      }
      x[slideIndex-1].style.display = "block";
    }
    
    </script>
    
    
    <?php
    
    if( have_rows('image') ):
      while ( have_rows('image') ) : the_row();
        if( get_sub_field('subimage') ) :
          echo '<div class="mySlides">' . get_sub_field('subimage') . '</div>';
        endif;
      endwhile;
    endif;
    
    ?>
    
    <a class="home-btn-left" onclick="plusDivs(-1)">❮</a>
    <a class="home-btn-right" onclick="plusDivs(1)">❯</a>
    
    <script>
      showDivs(slideIndex);
    </script>
    
    <?php get_footer(); ?>
    

    如果这不能解决您的问题,请告诉我。

    【讨论】:

    • 谢谢阿德里安!它解决了第二张幻灯片的问题。现在我试图找出为什么重叠幻灯片的问题仍然存在。只有当我重新加载网站时才会发生这种情况。如果我转到下一张幻灯片,然后再返回它不会发生。
    • 我更新了我的答案,试试这个,它应该可以工作。我在图像之后调用了 showDivs() 函数,因为之前调用它还为时过早。它在加载 html 标记之前触发。
    • 我添加了 showDivs(slideIndex);正下方 var slideIndex = 1;问题还在继续……你有什么建议吗?
    • 查看我发布的代码。在&lt;?php get_footer(); ?&gt; 之前,我认为它应该解决您的问题。
    • 完美运行!你真是太棒了。你能告诉我为什么它在页脚之前有效,而在页眉之前无效吗?
    猜你喜欢
    • 1970-01-01
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多