在php include上设置javascript变量

时间:2017-05-21 09:24:39

标签: javascript php

我有一个带有多个链接的html向Handler.php文件发送Get请求,例如

<a href="Handler?Node=FirstGroup"><div class="MyClass">First Group</div></a>
<a href="Handler?Node=SecondGroup"><div class="MyClass">Second Group</div></a>

然后Handler.php使用include发送请求:

if(isset($_GET['Node'])) {
    $Node=$_GET['Node'];
    if ($Node=="FirstGroup"){
        include 'Header.php';
        include '1MainTitle.php';
        include '2Selector.php';
        include '3FirstGroup.php';
        include 'xfoot.php';
    }
    elseif ($Node=="SecondGroup"){
        include 'Header.php';
        include '1MainTitle.php';
        include '2Selector.php';
        include '3SecondGroup.php';
        include 'xfoot.php';
    }
}

我的问题在于Header.php。虽然我在浏览器中看到了javascript(使用F12),但是检查员显示警告TypeError: slides[(slideIndex - 1)] is undefined,并且第一张幻灯片没有显示(脚本用于显示多张照片,一个接一个)。

我的Header.php文件是这样的:

<!DOCTYPE html>

<html>
<head>
    <title>The Title</title>
    <link href="../Files/EB.css" rel="stylesheet" type="text/css" />
    <link rel="icon" href="../Files/Images/favicon.ico" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">


<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>

</head>

<body>

请注意,脚本中定义了slideIndex

我的问题是:浏览器从php include中加载后“读取”javascript?

1 个答案:

答案 0 :(得分:0)

showSlides函数slideIndex中,并未在所有情况下定义。

它定义在n > slides.length

的位置

它也定义在n < 1

的位置

否则,它是未定义的。

在上面的代码中,您将n传递给1函数,因此,如果有多个幻灯片,slideIndex仍未定义。