我通过查询显示了4个按钮:
<?php
$sql = DB::getInstance()->get('modules', array('username', '=', $user->data()->username));
if (!$sql->count()) {
echo 'No data';
} else {
foreach ($sql->results() as $sql) {
?>
<p><button class=" btn btn-danger btn-lg btn-block" id="test1"> <?php echo $sql->name; ?></button></p>
<?php
}
}
?>
这将从查询中输出四个按钮(属于登录用户的模块),但问题是四个按钮中只有一个按钮是可点击的并显示下一页。下面的js获取按钮的ID并重定向到下一页:
<script>
$(document).ready(function () {
$("#test1").click(function () {
window.location = "module-options.php?name=" + $("#test1").text();
});
});
</script>
当我点击除第一个按钮以外的其他按钮时,没有任何反应。它们都意味着重定向到与第一页相同的页面。问题是如何使其他按钮可点击。我希望我能说清楚。
答案 0 :(得分:2)
首先,您需要将SELECT标记放在foreach循环之外。您可以将循环语句更改为以下内容:
if (!$sql->count()) {
echo 'No data';
} else {
echo '<select>';
foreach ($sql->results() as $sql) {
echo '<option value="module">' . $sql->name . '</option>';
}
echo '</select>';
}
请注意,所有OPTION标记的值都相同。这可能会给你带来麻烦。
关于按钮问题,您的代码只显示一个按钮。什么&#34;其他&#34;你指的是什么?假设你复制了这个:
<p><button class=" btn btn-danger btn-lg btn-block" id="test"> <?php echo $sql->name; ?></button></p>
将它放在foreach循环中,然后一个问题是你为每个按钮使用相同的ID。每个HTML元素实体只应有一个ID。如果您只需要ID,那么您可以在javascript中引用元素,那么您可以将它作为一个类并像这样引用它们:
<p><button class="test btn btn-danger btn-lg btn-block"> <?php echo $sql->name; ?></button></p>
<script>
$(document).ready(function () {
$(".test").click(function () {
window.location = "#?name=" + $(this).text();
});
});
</script>
选择器(&#34; .test&#34;)表示具有&#34; test&#34;的任何元素。作为一个班级。 $(this).text()将输出任何元素的文本,其中包含&#34; test&#34;作为一个班级,点击了。