我正在django上做一个项目,我正在制作一个模板,我希望div元素在隐藏和显示之间切换,但它不起作用。 我从一个工作模板中获取了该函数,但由于某种原因它在django项目中不起作用。我只是无法找到问题的解决方案。 这是模板:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<title>Admin Home Page</title>
{% load staticfiles %}
<!-- Bootstrap core CSS -->
<link href="{% static 'Boards/Homepage/vendor/bootstrap/css/bootstrap.min.css' %}" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link href='https://fonts.googleapis.com/css?family=Sofia' rel='stylesheet'>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!-- Custom styles for this template -->
<link href="{% static 'Boards/Homepage/css/modern-business.css' %}" rel="stylesheet">
<style>
#ManageUsers {
display: none;
}
</style>
<script type="text/javascript">
function ToggleHide(id) {
var divelement = document.getElementById(id);
if (divelement.style.display === 'none')
divelement.style.display = 'block';
else
divelement.style.display = 'none';
}
</script>
</head>
<body>
<!-- Navigation -->
<nav class="navbar fixed-top navbar-expand-lg fixed-top" style="background-color: #0b0849;">
<div class="container">
<a class="navbar-brand" href="#" style="margin-left: -120px; font-family: 'Sofia';font-size: 22px;" ><i class="fa fa-flash" style="font-size:24px"></i> Drello Admin</a>
<div class="search-container">
<form action="/action_page.php">
<input type="text" placeholder="Search.." name="search">
<button type="submit"><i class="fa fa-search"></i></button>
</form>
</div>
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
<li>
<a class="navbar-brand" href="index.html"><i class="fa fa-home" style="font-size:24px;"></i> Home</a>
</li>
<li class="nav-item dropdown" style="margin-right: -120px;">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownBlog" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> My Profile</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdownBlog">
<a class="dropdown-item" href="full-width.html" style="color: #0b0849; margin-bottom: 10px;"><i class="fa fa-user-circle"></i> Profile</a>
<a class="dropdown-item" href="full-width.html" style="color: #0b0849; margin-bottom: 10px;"><i class="fa fa-user-plus"></i> Add User</a>
<a class="dropdown-item" href="sidebar.html" style="color: #0b0849; margin-bottom: 10px;"><i class="fa fa-bell"></i> Sidebar Page</a>
<a class="dropdown-item" href="#" style="color: #0b0849; margin-bottom: 10px;"><i class="fa fa-power-off"></i> Logout</a>
</div>
</li>
</ul>
</div>
</div>
</nav>
<br>
<br>
<!-- Page Content -->
<div class="container">
<!-- Page Heading -->
<h2 class="my-4" style="margin-left: -50px; font-size: 16px; font-weight: 700; display: inline-block; color: #0b0849;"><i class="fa fa-address-book-o"></i><a href = "" onclick="ToggleHide('ManageUsers');"> Manage Users </a> </h2>
<div class="row" style="margin-left: -45px;">
<div class="col-lg-3 col-md-4 col-sm-6 portfolio-item">
</div>
</div>
<div id="ManageUsers">
<table style="width:50%">
<tr>
<th>User Name</th>
</tr>
<tr>
<td>Zeinab Awada</td>
<td><a href = "#" > <button>Edit User</button></a><td>
</tr>
<tr>
<td>Mahdi Jaber </td>
<td><a href = "#" > <button>Edit User</button></a><td>
</tr>
</table>
</div>
<div class="container">
<!-- Page Heading -->
<h2 class="my-4" style="margin-left: -40px; font-size: 16px; font-weight: 700; display: inline-block; color: #0b0849; padding-top: 20px;"><i class="fa fa-bars"></i> <a href = "" onclick="ToggleHide('ManageUsers');"> Manage Boards</a></h2>
</div>
</div>
<!-- /.container -->
<!-- Bootstrap core JavaScript -->
</body>
</html>
答案 0 :(得分:1)
如果您将a
更改为例如span
它有效。那,或者您需要使用preventDefault()
来防止锚点默认行为。
Stack snippet - 已更改为span
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<title>Admin Home Page</title>
{% load staticfiles %}
<!-- Bootstrap core CSS -->
<link href="{% static 'Boards/Homepage/vendor/bootstrap/css/bootstrap.min.css' %}" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link href='https://fonts.googleapis.com/css?family=Sofia' rel='stylesheet'>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!-- Custom styles for this template -->
<link href="{% static 'Boards/Homepage/css/modern-business.css' %}" rel="stylesheet">
<style>
#ManageUsers{
display :none;
}
</style>
<script type="text/javascript">
function ToggleHide(id) {
var divelement = document.getElementById(id);
if(divelement.style.display === 'none')
divelement.style.display = 'block';
else
divelement.style.display = 'none';
}
</script>
</head>
<body>
<!-- Navigation -->
<nav class="navbar fixed-top navbar-expand-lg fixed-top" style="background-color: #0b0849;">
<div class="container">
<a class="navbar-brand" href="#" style="margin-left: -120px; font-family: 'Sofia';font-size: 22px;" ><i class="fa fa-flash" style="font-size:24px"></i> Drello Admin</a>
<div class="search-container">
<form action="/action_page.php">
<input type="text" placeholder="Search.." name="search">
<button type="submit"><i class="fa fa-search"></i></button>
</form>
</div>
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
<li>
<a class="navbar-brand" href="index.html"><i class="fa fa-home" style="font-size:24px;"></i> Home</a>
</li>
<li class="nav-item dropdown" style="margin-right: -120px;">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownBlog" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> My Profile</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdownBlog">
<a class="dropdown-item" href="full-width.html" style="color: #0b0849; margin-bottom: 10px;"><i class="fa fa-user-circle"></i> Profile</a>
<a class="dropdown-item" href="full-width.html" style="color: #0b0849; margin-bottom: 10px;"><i class="fa fa-user-plus"></i> Add User</a>
<a class="dropdown-item" href="sidebar.html" style="color: #0b0849; margin-bottom: 10px;"><i class="fa fa-bell"></i> Sidebar Page</a>
<a class="dropdown-item" href="#" style="color: #0b0849; margin-bottom: 10px;"><i class="fa fa-power-off"></i> Logout</a>
</div>
</li>
</ul>
</div>
</div>
</nav>
<br>
<br>
<!-- Page Content -->
<div class="container">
<!-- Page Heading -->
<h2 class="my-4" style="margin-left: -50px; font-size: 16px; font-weight: 700; display: inline-block; color: #0b0849;"><i class="fa fa-address-book-o"></i><span onclick="ToggleHide('ManageUsers');"> Manage Users </span> </h2>
<div class="row" style="margin-left: -45px;">
<div class="col-lg-3 col-md-4 col-sm-6 portfolio-item">
</div>
</div>
<div id="ManageUsers">
<table style="width:50%">
<tr>
<th>User Name</th>
</tr>
<tr>
<td>Zeinab Awada</td>
<td><a href = "#" > <button>Edit User</button></a><td>
</tr>
<tr>
<td>Mahdi Jaber </td>
<td><a href = "#" > <button>Edit User</button></a><td>
</tr>
</table>
</div>
<div class="container">
<!-- Page Heading -->
<h2 class="my-4" style="margin-left: -40px; font-size: 16px; font-weight: 700; display: inline-block; color: #0b0849; padding-top: 20px;"><i class="fa fa-bars"></i> <span onclick="ToggleHide('ManageUsers');"> Manage Boards</span></h2>
</div>
</div>
<!-- /.container -->
<!-- Bootstrap core JavaScript -->
</body>
</html>
堆叠代码段 - 已更改onlick
并添加了preventDefault()
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<title>Admin Home Page</title>
{% load staticfiles %}
<!-- Bootstrap core CSS -->
<link href="{% static 'Boards/Homepage/vendor/bootstrap/css/bootstrap.min.css' %}" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<link href='https://fonts.googleapis.com/css?family=Sofia' rel='stylesheet'>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<!-- Custom styles for this template -->
<link href="{% static 'Boards/Homepage/css/modern-business.css' %}" rel="stylesheet">
<style>
#ManageUsers{
display :none;
}
</style>
<script type="text/javascript">
function ToggleHide(e) {
e.preventDefault();
var divelement = document.getElementById(this);
if(divelement.style.display === 'none')
divelement.style.display = 'block';
else
divelement.style.display = 'none';
}
</script>
</head>
<body>
<!-- Navigation -->
<nav class="navbar fixed-top navbar-expand-lg fixed-top" style="background-color: #0b0849;">
<div class="container">
<a class="navbar-brand" href="#" style="margin-left: -120px; font-family: 'Sofia';font-size: 22px;" ><i class="fa fa-flash" style="font-size:24px"></i> Drello Admin</a>
<div class="search-container">
<form action="/action_page.php">
<input type="text" placeholder="Search.." name="search">
<button type="submit"><i class="fa fa-search"></i></button>
</form>
</div>
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
<li>
<a class="navbar-brand" href="index.html"><i class="fa fa-home" style="font-size:24px;"></i> Home</a>
</li>
<li class="nav-item dropdown" style="margin-right: -120px;">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownBlog" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> My Profile</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdownBlog">
<a class="dropdown-item" href="full-width.html" style="color: #0b0849; margin-bottom: 10px;"><i class="fa fa-user-circle"></i> Profile</a>
<a class="dropdown-item" href="full-width.html" style="color: #0b0849; margin-bottom: 10px;"><i class="fa fa-user-plus"></i> Add User</a>
<a class="dropdown-item" href="sidebar.html" style="color: #0b0849; margin-bottom: 10px;"><i class="fa fa-bell"></i> Sidebar Page</a>
<a class="dropdown-item" href="#" style="color: #0b0849; margin-bottom: 10px;"><i class="fa fa-power-off"></i> Logout</a>
</div>
</li>
</ul>
</div>
</div>
</nav>
<br>
<br>
<!-- Page Content -->
<div class="container">
<!-- Page Heading -->
<h2 class="my-4" style="margin-left: -50px; font-size: 16px; font-weight: 700; display: inline-block; color: #0b0849;"><i class="fa fa-address-book-o"></i><a href = "" onclick="ToggleHide.apply('ManageUsers',arguments);"> Manage Users </a> </h2>
<div class="row" style="margin-left: -45px;">
<div class="col-lg-3 col-md-4 col-sm-6 portfolio-item">
</div>
</div>
<div id="ManageUsers">
<table style="width:50%">
<tr>
<th>User Name</th>
</tr>
<tr>
<td>Zeinab Awada</td>
<td><a href = "#" > <button>Edit User</button></a><td>
</tr>
<tr>
<td>Mahdi Jaber </td>
<td><a href = "#" > <button>Edit User</button></a><td>
</tr>
</table>
</div>
<div class="container">
<!-- Page Heading -->
<h2 class="my-4" style="margin-left: -40px; font-size: 16px; font-weight: 700; display: inline-block; color: #0b0849; padding-top: 20px;"><i class="fa fa-bars"></i> <a href = "" onclick="ToggleHide.apply('ManageUsers',arguments);"> Manage Boards</a></h2>
</div>
</div>
<!-- /.container -->
<!-- Bootstrap core JavaScript -->
</body>
</html>
我还建议避免使用内联脚本,而是使用事件侦听器,并执行类似这样的操作来附加click
事件
document.querySelector('a css-selector').addEventListener('click', function(e) {
// e holds the event and this holds the element that were clicked on
});
答案 1 :(得分:0)
由于您使用CSS来操作div的初始显示,因此javascript不会使用
来获取此样式divelement.style.display
相反,您有两种选择。
1.在div中设置样式
<div style=display:none>
并修复你的锚标签
<a href="#" onclick="ToggleHide('ManageUsers');"> Manage Users </a>
然后您的代码将立即运行。
function ToggleHide(id) {
var divelement = document.getElementById(id);
var displayStyle = divelement.currentStyle ? divelement.currentStyle.display : getComputedStyle(divelement, null).display;
if (displayStyle === 'none')
divelement.style.display = 'block';
else
divelement.style.display = 'none';
}
无论哪种方式,您都需要将锚点href设置为#,因为当您单击链接时,您将尝试导航。
希望这能回答你的问题。