在while循环内部执行整个用户详细信息,当我单击按钮时,用户ID传递到while循环外部的函数。问题是,当我单击按钮时,该值应该每10或5秒传递一次,但是在下面的代码中,当我第一次单击它执行完美时,但是在我单击第二次或第三次单击时,将其值分别设置为第一次,第二次执行,第三等等,如果我犯了任何错误,请纠正我,否则有任何逻辑?
<?php
include("database/connect.php");
$q = mysqli_query($con, "select * from tbl_user");
while ($f = mysqli_fetch_array($q)) { ?>
<input type="button" name="ch" value="<?= $f['id'] ?>" onclick="fcc(<?= $f['id']?>)"/><br>
<?php } ?>
<script>
function fcc(cc) {
setInterval(function() {
alert(cc);
}, 3000);
}
</script>
答案 0 :(得分:4)
将间隔计时器分配给全局变量,并在启动新计时器时停止旧计时器。
0
答案 1 :(得分:1)
您应该在开始新间隔之前清除间隔
ES6:
{
let interval;
function fcc(cc) {
clearInterval(interval);
interval = setInterval(fcc.callback.bind({}, [cc]), 1000);
}
window.fcc = fcc;
}
fcc.callback = function myAlert(m) {
console.log(m)
}
<input type="button" name="ch" value="a" onclick="fcc('a')" /><br>
<input type="button" name="ch" value="b" onclick="fcc('b')" /><br>
<input type="button" name="ch" value="c" onclick="fcc('c')" /><br>
或使用ES5
function _fcc() {
var interval;
return function (m) {
clearInterval(interval)
interval = setInterval(fcc.callback.bind({}, [m]), 1000);
}
}
fcc = _fcc();
fcc.callback = function myAlert(m) {
console.log(m)
}
<input type="button" name="ch" value="a" onclick="fcc('a')" /><br>
<input type="button" name="ch" value="b" onclick="fcc('b')" /><br>
<input type="button" name="ch" value="c" onclick="fcc('c')" /><br>