javascript - PHP函数与jquery按类动态随机插入记录

标签 javascript php jquery

我创建了以下函数来显示具有随机名称的 block 。创建另一个数组,然后抓取更多记录,并按类“名称”将它们随机插入到标签中,并具有淡入、淡出效果。除了脚本实际将“新名称”注入(inject)到 li 中之外,所有功能都有效。

    function query_in_memoriam() {

/*authentication call hidden */
$query = "SELECT formatted_name FROM xxxx WHERE xxxx = 'xxxx' ORDER BY RAND(last_name) LIMIT 30";
$result = mysqli_query($link, $query);

$i = 0;
$buildMemoriam = "";
while ($i < 20){
    $result_array = mysqli_fetch_array($result);
    $buildMemoriam .= '<li class="name">'.$result_array['formatted_name'].'</li>';
    $i++;
}   

$buildMemoriamDisplay = '<div id="memoriam" class="row bg-standard">
    <h2>In Memoriam </h2>
    <p>In progress, randomizes on refresh, just need to fade in/out names. JA 8/31</p>
    <div id="memoriam-container">
        <ul class="memoriam-items">
        ' . $buildMemoriam . '
        </ul>
    </div>
</div>';

$i = 21;
$array = "";
    while ($i < 30 ){
        $result_array = mysqli_fetch_array($result);
        $array = '"'.$result_array['formatted_name'].'",';
        $i++;
    }
?>
<script>
jQuery(document).ready(function( $ ) {
var names = [<?php json_encode($array); ?> ];
var lis = document.getElementsByClassName('name');

window.setInterval(function changeNameRandomly() {
  var randomNamesIndex = Math.floor(Math.random() * names.length);
  var randomLiIndex = Math.floor(Math.random() * lis.length);
  var randomName = "";
  $(lis[randomLiIndex]).fadeOut("slow", function() {
    randomName = names[randomNamesIndex];
    var addit = true;
    $(".name").each(function()
    {
        if ( $(this).text() == randomName ) {
            // console.log("Duplicate: looking again");
            addit = false;
            $(lis[randomLiIndex]).fadeIn();
        }
     });
     if(addit) {
        $(lis[randomLiIndex]).html(randomName);
        // console.log(randomName);
        $(lis[randomLiIndex]).fadeIn();
     }
  }.bind(this));

}, 2000);
});
</script>
<?php
return $buildMemoriamDisplay;
}

最佳答案

你不是在创建一个数组,而是在创建一个字符串......并每次都替换它。这是更新的代码

$array = array();
while ($i < 30 ){
     $result_array = mysqli_fetch_array($result);
     $array[] = $result_array['formatted_name'];
     $i++;
}

还有这个

var names = <?php echo json_encode($array); ?>;

关于javascript - PHP函数与jquery按类动态随机插入记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46004401/

相关文章:

php - 使用 array_diff 比较关联数组和数值数组

javascript - JavaScript 中不需要的事件监听器的垃圾收集

javascript - 如何使用 Jquery 在用户清除文本字段并将焦点移出文本字段时触发事件?

javascript - Jade : load external javascript and call function

javascript - 如何在nodejs服务器上使用tensorflow js?

jquery - 按钮将表单提交到 "Get"ActionResult 而不是 "Post"

jquery - jquery中的多种功能切换

javascript - 将方形或圆形图像放入谷歌地图中的直线路径中

php - MySQL 中的数学函数是否比 PHP 更快?

php - mysql查询根据日期检索记录