2015-12-02 65 views
0

我正在編寫的網頁將用於顯示幻燈片圖像,它們的名稱以及說明。這是在不同的頁面中輸入的。我面臨的問題是,我爲幻燈片名稱創建的數組被視爲字符串。所以它不會返回幻燈片名稱,而只是一個數字。任何幫助,將不勝感激將數組解析爲函數調用中的字符串

這是我的代碼。我用了一個alert來獲取值的長度,這是當我看到陣列被解析爲一個字符串

<body > 
     <?php 
     $sql_pres_slide = new CGenRs("SELECT * FROM presentation where pres_code='" . pg_escape_string($_GET['show']) . "'", $cao); 
     $sql_pres_slide->first(); 
     $sql_pres_select = new CGenRs("SELECT * FROM slide where presentation_id='" . $sql_pres_slide->valueof('pres_id') . "' order by slide_no ASC", $cao); 
     $sql_pres_select->first(); 
     ?> 
     <table border="1" align="center"> 
      <tr> 
       <td></td> 
       <td><p align="center" ><h1 align="center"><?php echo $sql_pres_slide->valueof('pres_name'); ?> </h1><p></td> 
       <td></td> 
      </tr> 
      <tr> 
       <td rowspan="2" ><button onclick="prevSlide(slide_no)" style="color: #999; font-size: 25px" class="glyphicon glyphicon-menu-left" ></button></td> 
       <td rowspan="2"> 
        <div class="backgrund_img" > 
         <img src="../administration/file_manager/files/samsungS4-portrait-white.png" alt="" class="background_img" style="height:786px; width:406px;" /> 
         <div id="inside_img"><img src="<?php echo $sql_pres_select->valueof('file_location') ?>" id="display" style="width: 360px; height:640px;"/></div> 
        </div> 
       </td> 
       <td rowspan="2"><button onclick="nextSlide(slide_no)" style="color: #999; font-size: 25px" class="glyphicon glyphicon-menu-right" ></button></td> 
       <td rowspan="2" class="info"><div id="func_slide_name"><font color="red" > <?php echo $sql_pres_select->valueof('slide_name') ?></font></div><div id="func_slide_desc" class="slide_select"><?php echo $sql_pres_select->valueof('description') ?></div></td> 
      </tr> 
      <tr rowspan="2" > 
       <td></td> 
       <td></td> 
       <td></td> 
      </tr> 
      <tr> 
       <td></td> 
       <td><div ><?php 
         while (!$sql_pres_select->eof()) { 
          echo "<a href=''>" . $sql_pres_select->valueof('slide_no') . "</a>" . " "; 
          $sql_pres_select->next(); 
         } 
         ?> </div></td> 
       <td></td> 
      </tr> 
     </table> 
     <?php $sql_pres_select->first(); ?> 
    </body> 
    <?php 
    $slide_img_array = array(); 
    $slide_desc_array = array(); 
    $slide_name_array = array(); 

    while (!$sql_pres_select->eof()) { 
     array_push($slide_img_array, $sql_pres_select->valueof('file_location')); 
     array_push($slide_desc_array, $sql_pres_select->valueof('description')); 
     array_push($slide_name_array, $sql_pres_select->valueof('slide_name')); 
     $sql_pres_select->next(); 
    } 

    ?> 
    <script> 

     var slide_no = 0; 
     var slides = <?php echo json_encode($slide_img_array); ?>; 
     var desc = <?php echo json_encode($slide_desc_array); ?>; 
     var name = <?php echo json_encode($slide_name_array); ?>; 



     function nextSlide() { 
      if (slide_no < slides.length) { 
       slide_no++; 
       document.getElementById("display").src = slides[slide_no]; 
       document.getElementById("func_slide_desc").innerHTML = desc[slide_no]; 
       document.getElementById("func_slide_name").innerHTML = name[slide_no]; 
       alert(name.length); 
      } 
     } 
     function prevSlide() { 
      if (slide_no > 0) { 
       slide_no--; 
       document.getElementById("display").src = slides[slide_no]; 
       document.getElementById("func_slide_desc").innerHTML = desc[slide_no]; 
       document.getElementById("func_slide_name").innerHTML = name[slide_no]; 
      } 
     } 
    </script> 

第二次嘗試

<body > 
    <?php 
    $sql_pres_slide = new CGenRs("SELECT * FROM presentation where pres_code='" . pg_escape_string($_GET['show']) . "'", $cao); 
    $sql_pres_slide->first(); 
    $sql_pres_select = new CGenRs("SELECT * FROM slide where presentation_id='" . $sql_pres_slide->valueof('pres_id') . "' order by slide_no ASC", $cao); 
    $sql_pres_select->first(); 
    ?> 
    <table border="1" align="center"> 
     <tr> 
      <td></td> 
      <td><p align="center" ><h1 align="center"><?php echo $sql_pres_slide->valueof('pres_name'); ?> </h1><p></td> 
      <td></td> 
     </tr> 
     <tr> 
      <td rowspan="2" ><button onclick="prevSlide(slide_no)" style="color: #999; font-size: 25px" class="glyphicon glyphicon-menu-left" ></button></td> 
      <td rowspan="2"> 
       <div class="backgrund_img" > 
        <img src="../administration/file_manager/files/samsungS4-portrait-white.png" alt="" class="background_img" style="height:786px; width:406px;" /> 
        <div id="inside_img"><img src="<?php echo $sql_pres_select->valueof('file_location') ?>" id="display" style="width: 360px; height:640px;"/></div> 
       </div> 
      </td> 
      <td rowspan="2"><button onclick="nextSlide(slide_no)" style="color: #999; font-size: 25px" class="glyphicon glyphicon-menu-right" ></button></td> 
      <td rowspan="2" class="info"><div id="func_slide_name"><font color="red" > <?php echo $sql_pres_select->valueof('slide_name') ?></font></div><div id="func_slide_desc" class="slide_select"><?php echo $sql_pres_select->valueof('description') ?></div></td> 
     </tr> 
     <tr rowspan="2" > 
      <td></td> 
      <td></td> 
      <td></td> 
     </tr> 
     <tr> 
      <td></td> 
      <td><div ><?php 
        while (!$sql_pres_select->eof()) { 
         echo "<a href=''>" . $sql_pres_select->valueof('slide_no') . "</a>" . " "; 
         $sql_pres_select->next(); 
        } 
        ?> </div></td> 
      <td></td> 
     </tr> 
    </table> 
    <?php $sql_pres_select->first(); ?> 
</body> 
<?php 
$slide_img_array = array(); 
$slide_desc_array = array(); 
$slide_name_array = array(); 

while (!$sql_pres_select->eof()) { 
    array_push($slide_img_array, $sql_pres_select->valueof('file_location')); 
    array_push($slide_desc_array, $sql_pres_select->valueof('description')); 
    array_push($slide_name_array, $sql_pres_select->valueof('slide_name')); 
    $sql_pres_select->next(); 
} 
?> 
<script> 

    var slide_no = 0; 
    var slides = <?php echo json_encode($slide_img_array); ?>; 
    var desc = <?php echo json_encode($slide_desc_array); ?>; 
    var name = new Array("<?php echo implode('","', $slide_name_array); ?>"); 
    alert(name.length); 


    function nextSlide() { 
     if (slide_no < slides.length) { 
      slide_no++; 
      document.getElementById("display").src = slides[slide_no]; 
      document.getElementById("func_slide_desc").innerHTML = desc[slide_no]; 
      document.getElementById("func_slide_name").innerHTML = name[slide_no]; 

     } 
    } 
    function prevSlide() { 
     if (slide_no > 0) { 
      slide_no--; 
      document.getElementById("display").src = slides[slide_no]; 
      document.getElementById("func_slide_desc").innerHTML = desc[slide_no]; 
      document.getElementById("func_slide_name").innerHTML = name[slide_no]; 
     } 
    } 
</script> 

正如你將能夠看到, var name陣列與其他陣列不同。這只是因爲我嘗試了一種不同的方法來查看它是否能解決問題。它其實並不是。

如果任何人都可以在正確的方向指向我在這裏,這將是非常讚賞 我要補充的是,第一個結果顯示正確,它只是一旦函數被調用的錯誤來闡述

我在瀏覽器中查看元素的腳本。

<script> 

     var slide_no = 0; 
     var slides = ["..\/administration\/file_manager\/presentation\/Slides\/30_chair.jpg","..\/administration\/file_manager\/presentation\/Slides\/30_RTAC20150901_1.png","..\/administration\/file_manager\/presentation\/Slides\/30_RTAC20150901_2.png","..\/administration\/file_manager\/presentation\/Slides\/30_RTAC20150901_3.png","..\/administration\/file_manager\/presentation\/Slides\/30_RTAC20150901_4.png","..\/administration\/file_manager\/presentation\/Slides\/30_RTAC20150901_5.png"]; 
     var desc = ["This is the the new 1st slide","Slide one","Slide two","Slide the third","Slide the fourth","Slide the fifth"]; 

     var name1 = 'The new slide 1,Slide 1,Slide 2 ,Slide 3,slide 4,Slide 5'; 
     var name = name1.split(","); 



     function nextSlide() { 
      if (slide_no < slides.length) { 
       slide_no++; 
       document.getElementById("display").src = slides[slide_no]; 
       document.getElementById("func_slide_desc").innerHTML = desc[slide_no]; 
       document.getElementById("func_slide_name").innerHTML = name[slide_no]; 
       alert(name.length); 
      } 
     } 
     function prevSlide() { 
      if (slide_no > 0) { 
       slide_no--; 
       document.getElementById("display").src = slides[slide_no]; 
       document.getElementById("func_slide_desc").innerHTML = desc[slide_no]; 
       document.getElementById("func_slide_name").innerHTML = name[slide_no]; 
      } 
     } 
    </script> 

請注意,var name1等於一個長字符串,這不應該發生。

當使用json_encode我取得了以下結果在我的瀏覽器腳本

<script> 

     var slide_no = 0; 
     var slides = ["..\/administration\/file_manager\/presentation\/Slides\/30_chair.jpg","..\/administration\/file_manager\/presentation\/Slides\/30_RTAC20150901_1.png","..\/administration\/file_manager\/presentation\/Slides\/30_RTAC20150901_2.png","..\/administration\/file_manager\/presentation\/Slides\/30_RTAC20150901_3.png","..\/administration\/file_manager\/presentation\/Slides\/30_RTAC20150901_4.png","..\/administration\/file_manager\/presentation\/Slides\/30_RTAC20150901_5.png"]; 
     var desc = ["This is the the new 1st slide","Slide one","Slide two","Slide the third","Slide the fourth","Slide the fifth"]; 
     var name = ["The new slide 1","Slide 1","Slide 2 ","Slide 3","slide 4","Slide 5"]; 




     function nextSlide() { 
      if (slide_no < slides.length) { 
       slide_no++; 
       document.getElementById("display").src = slides[slide_no]; 
       document.getElementById("func_slide_desc").innerHTML = desc[slide_no]; 
       document.getElementById("func_slide_name").innerHTML = name[slide_no]; 
       alert(name.length); 
      } 
     } 
     function prevSlide() { 
      if (slide_no > 0) { 
       slide_no--; 
       document.getElementById("display").src = slides[slide_no]; 
       document.getElementById("func_slide_desc").innerHTML = desc[slide_no]; 
       document.getElementById("func_slide_name").innerHTML = name[slide_no]; 
      } 
     } 
    </script> 

回答

1

你可以嘗試json_encode與陣列:

var name = <?php echo json_encode($slide_name_array); ?>; 

更新

我已經改變了namenames和它的作品:/

http://jsbin.com/tojase/1/edit?js,console

+0

試過了,不起作用 –

+0

你得到了哪個結果? – naoxink

+0

查看帖子,我把瀏覽器結果貼在底部 –

0

試試這個:

var name1 = '<?php implode(",",$slide_name_array); ?>'; var name = name1.split(",");

+0

我試過了。將值返回爲undefined –

+0

嘗試打印'$ slide_name_array'也許它是空的 – kostova

+0

Stil沒有運氣......它不是空的,它只是被解析成一個字符串。所以當我檢查'var name'的長度時,它返回56,這是所有名字的總和。 –

0

後與其他各種方法嘗試孜孜不倦,這一切都歸結爲從

var name= <?php echo json_encode($slide_name_array); ?>; 

重命名變量至

var names = <?php echo json_encode($slide_name_array); ?>; 

並調整此變量的所有其他實例。讓它成爲一個教訓傢伙。而是使用你自己的變量!