gpt4 book ai didi

javascript - jQuery 代码适用于 php 循环生成按钮的最后一次迭代

转载 作者:行者123 更新时间:2023-11-29 21:05:19 26 4
gpt4 key购买 nike

我正在创建一个论坛,人们可以在其中对帖子进行投票。投票称为“同意”。

<?php
$postshow = "SELECT * FROM ideas_1 ORDER BY consents DESC LIMIT 10";
$done = mysqli_query($conn, $postshow);
//$show = mysqli_fetch_assoc($done);

while ($show = mysqli_fetch_assoc($done)) {
echo"<div class = 'comments'>";
echo"<br>";
echo"<br>";
echo $show['post'];
echo"<br>";
echo"<p class = 'counter'>";
echo $show['consents'];
echo"</p>";
echo"<br>";
$postid = $show['postid'];
$userid = $show['userid'];
$consents = $show['consents'];
$asd = "SELECT * FROM consents WHERE dept = 'ideas' and task = '1' and postid = '$postid' and voterid = '$id'";
$doit = mysqli_query($conn, $asd);
$exist = mysqli_num_rows($doit);
if ($exist == 0){
echo"<button id = \"consents$postid\">Consent This</button>";
}
echo"</div>";


}
?>
<script>
var posterid = "<?php echo $userid;?>"
var postid = "<?php echo $postid;?>"
var voterid = "<?php echo $id;?>"
var consents = "<?php echo $consents;?>"

$(document).ready(function () {
$('#consents' + postid).click(function(){
$(this).hide();
$.post ("consentsideas.php", {
dept: "ideas",
task: "1",
postid: postid,
voterid: voterid,
consents: consents,
posterid: posterid
});
$(".counter").html(++consents);
});
$(".answer").mousedown(function(){
$(".post_answer").show();
});
$(document).click(function(event) {
if(!$(event.target).closest('.post_answer').length) {
if($('.post_answer').is(":visible")) {
$('.post_answer').hide();
}
}
});
$(".post_answer").click(function(){
var answer = $(".answer").val();
$.post ("answerideas.php", {
answer: answer,
id: voterid
});
$(".answer").val('');
});
}
);
</script>

但 while 循环循环的任何按钮在单击时只会更新 while 循环最后一次迭代的 CONSENTS 计数器。如您所见,我已将按钮的 ID 设为唯一(希望我做对了)。那么谁能告诉我问题出在哪里?

最佳答案

问题不在您的 PHP 中;它在你的 JavaScript 中。您设置了一次 postid,使用在 while 循环的最后一次迭代中设置的最后一个 $postid

解决此问题的一种方法是,不将点击事件绑定(bind)到 id(如 #consents123),而是绑定(bind)到在每个“同意此操作”按钮上设置的类(如.consents).

然后你需要在某处缓存你需要的其他数据(如 postid),例如作为按钮上的数据属性,或在元素 id 中,然后在你访问时检索它在点击处理程序中需要它。

PHP

<button id = \"consents$postid\" class="consents" data-postid="$postid">Consent This</button>

JS

$('.consents').click(function() {
...
var postid = $(this).data('postid');
...
});

关于javascript - jQuery 代码适用于 php 循环生成按钮的最后一次迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44397648/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com