簡體   English   中英

PHP while循環數組到JavaScript無限循環

[英]PHP while loop array to JavaScript infinitely looping

為什么這會向我的JavaScript函數發送一個無限循環,而不是像其他while循環那樣僅發送單擊1次的結果?

這是2條代碼,第1條是有問題的代碼,它們再次循環n,並在很長一段時間后拋出NANn然后中斷...第二條代碼是從MySQL數據庫中獲得相同的while循環,並具有相同的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);' >
    "; 
}

使用x尋找什么條件? X是否應等於頁數?

循環中發生的第一件事是x遞增。 當代碼到達上述if語句時,如果x大於pagenum,則if塊中的代碼會將x重置為0,然后返回循環的開頭。

也許沒有理由做出if陳述。

同樣,在這里的代碼中x似乎除了增加以外沒有被修改,應該達到最終退出循環的條件。

當您說NaN時,我相信JavaScript代碼中也存在問題。

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

這就是為什么出現無限循環的原因:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM