【问题标题】:Call same <script> multiple times多次调用相同的 <script>
【发布时间】:2017-03-14 18:08:16
【问题描述】:

我是 JS、HTML 和 PHP 的新手,通常我用 C、C++、Java 编程... 我正在尝试做一个简单的页面,该页面使用 PHP 从 SQL 调用一些数据,然后显示它们: 文本部分很好,但我不知道如何多次调用该脚本来创建多个独立幻灯片

<script>
var slideIndex = 1;
showSlides(slideIndex);

function plusSlides(n) {
  showSlides(slideIndex += n);
}

function currentSlide(n) {
  showSlides(slideIndex = n);
}

function showSlides(n) {
  var i;
  var slides = document.getElementsByClassName("mySlides");
  var dots = document.getElementsByClassName("dot");
  if (n > slides.length) {slideIndex = 1} 
  if (n < 1) {slideIndex = slides.length}
  for (i = 0; i < slides.length; i++) {
      slides[i].style.display = "none"; 
  }
  for (i = 0; i < dots.length; i++) {
      dots[i].className = dots[i].className.replace(" active", "");
  }
  slides[slideIndex-1].style.display = "block"; 
  dots[slideIndex-1].className += " active";
}
</script>

<?php
$connection = mysqli_connect('HOST', 'NAME', 'PASS') or die('Could not    connect:' . mysqli_error());  
mysqli_select_db($connection, 'DATABASE') or die('nulla :D'); 
$query = "SELECT marca, modello, anno, frontale, laterale, retro FROM table ORDER BY modello ASC";
$result = mysqli_query($connection, $query) or die('non stampa :D');

// conto il numero di occorrenze trovate nel db
$numrows = mysqli_num_rows($result);



  // avvio un ciclo for che si ripete per il numero di occorrenze trovate
  for ($x = 0; $x < $numrows; $x++)
  {  
    // recupero il contenuto di ogni record trovato
    $resrow = mysqli_fetch_row($result);
    $marca = $resrow[0];
    $modello = $resrow[1];
    $anno = $resrow[2];
    $frontale = $resrow[3];
    $laterale = $resrow[4];
    $retro = $resrow[5];

    // stampo a video il risultato
    echo "modello:" . $marca; 
    ?>
    <br />
    <?php
    echo "marca:" . $modello; 
    ?>
    <br />
    <?php
    echo "anno:" . $anno;
    ?>
    <br />

  <div class="slideshow-container">
  <div class="mySlides fade">
    <div class="numbertext">1 / 3</div>
    <img src="<?php echo "$frontale"; ?>" style="width:100%">
    <div class="text">Caption Text</div>
  </div>

  <div class="mySlides fade">
    <div class="numbertext">2 / 3</div>
    <img src="<?php echo "$laterale"; ?>" style="width:100%">
    <div class="text">Caption Two</div>
  </div>

  <div class="mySlides fade">
    <div class="numbertext">3 / 3</div>
    <img src="<?php echo "$retro"; ?>g" style="width:100%">
    <div class="text">Caption Three</div>
  </div>

  <a class="prev" onclick="plusSlides(-1)">&#10094;</a>
  <a class="next" onclick="plusSlides(1)">&#10095;</a>
</div>
<br>

<div style="text-align:center">
  <span class="dot" onclick="currentSlide(1)"></span> 
  <span class="dot" onclick="currentSlide(2)"></span> 
  <span class="dot" onclick="currentSlide(3)"></span> 
</div>




<?php
  }

// chiudo la connessione
mysqli_close($connection);
?>

【问题讨论】:

  • 您不必多次调用脚本 .. 只调用一次脚本 .. 创建一个将创建幻灯片的方法 .. 并多次调用该方法 .. 使用循环或调用该方法任何适合您情况的方式...

标签: javascript php html object


【解决方案1】:

你已经准备好去做那件事了。

<script>

    slideIndex = 1; // This is "global" so you can reference it later. 
    //showSlides(slideIndex); Removed (see second script tag)

    // Function definitions are correct
    function plusSlides(n) {
      showSlides(slideIndex += n);
    }

    function currentSlide(n) {
      showSlides(slideIndex = n);
    }

    function showSlides(n) {
      var i;
      var slides = document.getElementsByClassName("mySlides");
      var dots = document.getElementsByClassName("dot");
      if (n > slides.length) {slideIndex = 1} 
      if (n < 1) {slideIndex = slides.length}
      for (i = 0; i < slides.length; i++) {
          slides[i].style.display = "none"; 
      }
      for (i = 0; i < dots.length; i++) {
          dots[i].className = dots[i].className.replace(" active", "");
      }
      slides[slideIndex-1].style.display = "block"; 
      dots[slideIndex-1].className += " active";
    }

</script>

...

现在稍后您将可以访问以上所有内容,因此您可以执行以下操作:

<script>
showSlides(slideIndex);
slideIndex = 2;
</script>

<script>
showSlides(slideIndex);
slideIndex = 3;
</script>

这只是演示了对象的“全局”状态(函数是对象)和变量slideIndex(有点像在主范围内,因为它没有明确的范围。)

希望这会有所帮助。

【讨论】:

  • 我做了一些小测试,毕竟什么都没有 XD,现在我已经在 PHP cicle 中插入了 JS,我使用 PHP cicle 的 $x 来创建相同脚本的不同版本,特别是我认为没关系,生成的页面看起来不错,但现在它只是同时显示所有图像:D
猜你喜欢
  • 2012-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-05
  • 2018-05-25
相关资源
最近更新 更多