gpt4 book ai didi

javascript - 在函数调用时将数组解析为字符串

转载 作者:行者123 更新时间:2023-12-03 08:13:49 25 4
gpt4 key购买 nike

我正在编写的网页将用于显示幻灯片图像、它们的名称以及说明。这是在不同的页面中输入的。我面临的问题是我为幻灯片名称创建的数组被视为字符串。因此它不会返回幻灯片名称,而只返回一个数字。任何帮助将不胜感激

这是我的代码。我使用 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>

最佳答案

您可以尝试使用您的数组json_encode:

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

更新

我已经将 name 更改为 names 并且它有效:/

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

关于javascript - 在函数调用时将数组解析为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34037019/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com