我创建了以下函数来显示具有随机名称的 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/