You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为while循环内的每个隐藏输入实现唯一ID名的技术问题

解决while循环中隐藏输入框ID重复导致获取错误ID的问题

嗨,我来帮你搞定这个问题!你遇到的核心问题是HTML里的id属性必须是唯一的,但你的while循环里每次都生成id="on"的隐藏输入框,所以当你用$("#on").val()获取值时,浏览器只会找到页面上第一个带这个id的元素,自然每次拿到的都是数据库第一行的ID啦。

下面给你两种修改方案,根据你的实际需求选就行:

方案一:简化逻辑,直接复用row_id(推荐)

既然你的隐藏输入框存的value就是$row_id,那完全没必要额外通过DOM去获取它,直接把row_id当作on的值传给后端就行:

修改后的PHP循环代码:

while(mysqli_stmt_fetch($stmt)): 
?>
<button class="btn btn-success btn-xs" onclick="InitTime(<?php echo $row_id; ?>)">Send</button> 
<!-- 这个隐藏框如果只是存row_id,其实可以删掉,不过要是后续有用可以保留,记得给唯一id -->
<input type="hidden" id="on-<?php echo $row_id; ?>" value="<?php echo $row_id; ?>"> 
<?php endwhile;

修改后的JS函数:

function InitTime(row_id) { 
    var conf = confirm("Are you sure to execute " + row_id); 
    if (conf) { // 直接判断conf为true更简洁
        $.post("ajax/initializeTime.php", { row_id: row_id, on: row_id } ); 
    } 
}

方案二:给每个隐藏框生成唯一ID(如果隐藏框存的不是row_id时用)

要是你的隐藏输入框以后会存其他值,那得给每个框生成唯一的id,比如用row_id拼接:

修改后的PHP循环代码:

while(mysqli_stmt_fetch($stmt)): 
?>
<button class="btn btn-success btn-xs" onclick="InitTime(<?php echo $row_id; ?>, 'on-<?php echo $row_id; ?>')">Send</button> 
<input type="hidden" id="on-<?php echo $row_id; ?>" value="<?php echo $row_id; ?>"> 
<?php endwhile;

修改后的JS函数:

function InitTime(row_id, elementId) { 
    var conf = confirm("Are you sure to execute " + row_id); 
    var on = $("#" + elementId).val(); 
    if (conf) { 
        $.post("ajax/initializeTime.php", { row_id: row_id, on: on } ); 
    } 
}

这样修改后,每次点击按钮都会对应到当前行的隐藏输入框,后端initializeTime.php就能拿到正确的ID啦!

内容的提问来源于stack exchange,提问作者Amanda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:55:11