2015-12-02 64 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); ?>; 

并调整此变量的所有其他实例。让它成为一个教训家伙。而是使用你自己的变量!