我对 PHP 开发还很陌生,使用 MySQL 并添加了 JS。我想听听专家对以下问题的意见,或者任何好的建议都可以。
因此,我正在制作一个网站,对你们大多数人来说可能很简单,但对我来说有点复杂,它允许登录用户创建活动并参加活动。
最近我添加了一个新功能 - 前端按类别过滤事件,因为我也想在 JS 上进行一些练习。还没有尝试过后端过滤。
问题是它工作正常,但我认为 JS 代码本身看起来非常糟糕和混乱。
因此我想了一个办法来优化它,但没有找到。
类别选择.html代码
<select class="custom-select mr-sm-2" id="filterCat"onchange="filterCategory()">
<option selected>All</option>
<option value="1">Concerts</option>
<option value="2">Sport</option>
<option value="3">Comedy</option>
<option value="4">Theatre</option>
<option value="5">Family attractions</option>
</select>
php查询以确定循环的大小
<?php
// ...
require_once('../features/con.php');
if (!$con->connect_errno) {
$countQ = "SELECT COUNT(*) AS number FROM events;";
$resultCounting = $con->query($countQ);
$size = mysqli_fetch_assoc($resultCounting);
}
// ...
?>
过滤结果算法
<script type="text/javascript">
var catinput, cat, evinput, events, table, i, t, txtValue, number, num, tableRes, none, no, tableID, tr, td;
number = <?php echo $size['number'] ?>;
function filterCategory() {
catinput = document.getElementById('filterCat');
cat = catinput.options[catinput.selectedIndex].text;
t = "table";
for (var j = 1; j <= number; j++) {
num = j;
tableRes = t.concat(num);
none = document.getElementById(tableRes).style.display;
if (none == "none") {
document.getElementById(tableRes).style.display = "";
}
}
}
}
</script>
每个具有不同事件的单独表都有唯一的ID,该ID是根据数据库中的event_id表列确定的(这是从1开始自动递增的列,自动设置)。
我创建了一个关联数组来列出数据库中的所有事件,然后只需添加以下一个: id="table<?php echo "$row[event_id]"?>"
但是这个 JS 代码本身 - 可以以某种方式优化吗?也许你有什么想法?
任何提示真的很感激!
郎朗坤
婷婷同学_
守候你守候我