PHP 而循环数组到 JavaScript 无限循环



为什么这会向我的 JavaScript 函数发送一个无限循环,而不是像我的另一个 while 循环那样只发送 1 次点击的结果?

这是 2 个代码,第一个是有问题的,它再次循环 n 遍,并在这么长时间后抛出一个NANn然后中断......第二个相同的 while 循环来自 MySQL 数据库,具有相同的onclick事件相同的变量检索和相同的函数,但第一个有问题的 while 循环只是无限循环而不是发送 1 值......

第一个代码...

echo "<div class='pagebuttonsdiv'>";
        while($x < $pagesnum) {
           $x++;    
           $xpage = $x*9;
           echo "<div class='pagebuttons' onclick='pageclick({$xpage},{$display},{$maxresults},{$startfrom});'>
             {$x}</div>";
           if ($x>$display) {
              echo"<br>"; };
           if ($x >$pagesnum) {
              $x=0; }     
        };
echo "</div>";

第二个代码

while($row = mysqli_fetch_assoc($result)) {
    <video id='$vidd' title='{$row['title']} {$row['locate']}' style='position:absolute; left:0px; top:18%; width:100%; height:60%; transform: scale(1.0,1.1);' preload='metadata' controls='controls'>
        <source src='vid/{$row['videos']}.mp4' type='video/mp4'>
        <source src='vid/{$row['videos']}.mp4' type='video/ogg'>
        <source src='vid/{$row['videos']}.mp4' type='video/webm'>                
    </video >
    <div id='vidicon' title='Video's' class='vidicon' onclick='controlshowvid($vidd , $pidd);' >
    "; 
}
<?php
 echo"
     <div class='pagebuttonsdiv'>
      ";
 for ( $x =1 ; $x < $pagesnum ; $x++ ) {   
 if ($x > $pagesnum) {$x==$pagesnum;}
   echo "<div class='pagebuttons' onclick='pageclick({$x},{$display}, {$maxresults} , {$startfrom});'>
      {$x}</div>";

      };
echo"
?>
<script>
function pageclick(pagex , display , maxresults , startfrom){
alert([pagex])
var startfrom=pagex*9
ERROR --->document.getElementById('startpoint').value = >removed ERROR(pageclick) (startfrom);<<<=
NOW --->document.getElementById('startpoint').value = (startfrom);
document.getElementById('pagechange').submit(); return false;   
}
</script>

它现在 POST 是单个值,它循环的原因,是因为它无法 POST。

您是否尝试过intval($pagenum),我很好奇所使用的数据类型是什么。

或者,您可以尝试在 while 循环之上设置这两个变量的值。$x=0;$pagenum=9;

你用x寻找的条件是什么?X 不应该等于页码吗?

循环中发生的第一件事是,x 递增。当代码到达提到的 if 语句时,如果 x 大于 pagenum,则 if 块中的代码将 x 重置为 0,然后返回到循环的开始。

也许没有理由说if。

同样,使用此处的代码,x 除了增量之外似乎没有被修改,并且最终应该达到退出循环的条件。

当你说 NaN 时,我相信 JavaScript 代码也有问题。

这就是为什么你会得到一个无穷循环:

echo "<div class='pagebuttonsdiv'>";
        while($x < $pagesnum) { // x < pagesnum -> enters the lopp, so it get out of the loop on x >= pagesnum
           $x++;    
           $xpage = $x*9;
           echo "<div class='pagebuttons' onclick='pageclick({$xpage},{$display},{$maxresults},{$startfrom});'>
             {$x}</div>";
           if ($x>$display) {
              echo"<br>"; };
           if ($x >$pagesnum) {
              $x=0; }     // when it's supposed to get out the loop you put it 0 (zero) so unless pagesnum is zero or less it will loop forever
        };
echo "</div>";

最新更新