当<option>来自使用php mysqli_query的sql时,onchange不会触发的原因是,当使用php的mysqli_query函数执行SQL查询时,返回的结果集是一个二维数组,其中每一行是一个关联数组,包含了查询结果的字段和对应的值。而<option>元素的onchange事件是在用户选择不同选项时触发的,但是由于<option>元素没有value属性,所以无法通过onchange事件获取到选中的值。
解决这个问题的方法是,在生成<option>元素时,将查询结果的字段值作为value属性的值,并将字段名作为显示文本。然后在onchange事件中通过this.value获取到选中的值。
以下是一个示例代码:
<?php
// 连接数据库
$conn = mysqli_connect("localhost", "username", "password", "database");
// 执行SQL查询
$result = mysqli_query($conn, "SELECT id, name FROM table");
// 生成<option>元素
while ($row = mysqli_fetch_assoc($result)) {
echo "<option value='" . $row['id'] . "'>" . $row['name'] . "</option>";
}
?>
<script>
// onchange事件处理函数
function handleChange() {
var selectedValue = this.value;
// 执行相应的操作
// ...
}
// 获取<select>元素
var selectElement = document.getElementById("mySelect");
// 绑定onchange事件
selectElement.onchange = handleChange;
</script>
在上面的代码中,通过mysqli_fetch_assoc函数获取到每一行的关联数组,然后将id字段作为value属性的值,name字段作为显示文本。在onchange事件处理函数中,通过this.value获取到选中的值,然后可以执行相应的操作。
推荐的腾讯云相关产品和产品介绍链接地址:
请注意,以上链接仅供参考,具体产品选择应根据实际需求和情况进行评估和决策。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云