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

时间:2017-11-02 00:58:55

标签: javascript php loops while-loop

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

以下是2个代码,第1个是有问题的,在n上再次循环,并在这么长时间后抛出NANn然后中断...第二个相同的while循环来自具有相同onclick事件的MySQL数据库同样检索变量和相同的函数,但第一个有问题的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);' >
    "; 
}

4 个答案:

答案 0 :(得分:0)

您正在寻找x的条件是什么? X不应该等于页面数?

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

也许没有理由说if语句。

同样使用此处的代码x似乎不会在增量之外进行修改,并且应该达到最终退出循环的条件。

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

答案 1 :(得分:0)

<?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了单个值,原因是循环,是因为它无法发布。

答案 2 :(得分:0)

你有没有尝试intval($ pagenum),我很好奇所用的数据类型是什么。

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

答案 3 :(得分:0)

这就是你获得无限循环的原因:

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