我正在尝试使用Javascript on-click函数显示和隐藏内容。我有一个相当长的表,所以我使用了class display:“none”作为它的一部分。然后我添加了一个按钮,点击该按钮将显示表的其余部分。比如隐藏/显示切换。它不会呈现。这是什么问题?控制台没有给我任何错误。谢谢,
null
function myFunction() {
var button = document.getElementById("button");
var hidden = document.getElementsByClassName("change");
for (var i = 0; i != hidden.length; i++) {
if (hidden[i].style.display === 'none') {
hidden[i].style.display === 'visible';
} else {
hidden[i].style.display === 'none';
}
}};
#dates {
width: 90%;
margin: auto;
margin-top: 50px;
}
table {
width: 100%;
margin: auto;
border-bottom: 1px solid gray;
text-align: left;
}
tr td {
border-top: 1px solid gray;
margin: 5px 10px;
padding: 20px 10px;
text-align: left;
font-size: 1.3em;
}
th {
font-size: 1.5em;
padding: 10px;
}
.change {
display: none;
}
#button {
width: 25%;
padding: 15px;
margin: auto;
text-align: center;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title> Mystic Mind...</title>
<link href="https://fonts.googleapis.com/css?family=Open+Sans:600" rel="stylesheet">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="css/lightbox.min.css">
<script type="text/javascript" src="css/lightbox-plus-jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="website gallery.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<section class="holder" id="dates">
<div>
<header>Tour Dates</header>
<table>
<tr>
<th>Date</th>
<th>Venue</th>
<th>Location</th>
</tr>
<tr>
<td>August 5, 2018</td>
<td>Parlour</td>
<td>Toronto, Canada</td>
</tr>
<tr>
<td>June 22, 2018</td>
<td>One Loft</td>
<td>Toronto, Canada</td>
</tr>
<tr>
<td>May 4, 2018</td>
<td>Rose In Rio</td>
<td>Buenos Aires, Argentina</td>
</tr>
<tr>
<td>May 3, 2018</td>
<td>AfterOffice @ Deltoro</td>
<td>Buenos Aires, Argentina</td>
</tr>
<tr>
<td>April 18, 2018</td>
<td>Rose In Rio</td>
<td>Buenos Aires, Argentina</td>
</tr>
<tr>
<td>March 15, 2018</td>
<td>Maldita Malta</td>
<td>Buenos Aires, Argentina</td>
</tr>
<tr>
<td>March 2, 2018</td>
<td>Vasily Zatek</td>
<td>Buenos Aires, Argentina</td>
</tr>
<tr>
<td>December 1, 2017</td>
<td>Parlor</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>November 11, 2017</td>
<td>Buennanote</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>October 27, 2017</td>
<td>One Loft</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>September 21, 2017</td>
<td>One Loft</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>August 18, 2017</td>
<td>Parlor</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>July 18, 2017</td>
<td>Parlor</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>June 17, 2017</td>
<td>One Loft</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>June 9, 2017</td>
<td>Wildflower</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>June 2, 2017</td>
<td>One Loft</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>April 6, 2017</td>
<td>Escobar</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>March 10, 2017</td>
<td>One Loft</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>March 4, 2017</td>
<td>Parlor</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>March 2, 2017</td>
<td>Wallen</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>February 2, 2017</td>
<td>Wallen</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>January 26, 2017</td>
<td>Escobar</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>January 20, 2017</td>
<td>Wildflower</td>
<td>Toronto, Canada</td>
</tr>
</table>
<div id="button">
<button class="btn btn-outline-primary waves-effect" onclick="myFunction()">Past Dates...</button>
</div>
</div>
</section>
null
我认为问题出在javascript上
hidden[i].style.display===“none”
返回的总是空的,因此您可以使用element.classname
为该元素指定的返回类
所以:if(hidden[i].offsetwidth==0&&hidden[i].offsetheight==0){}
如果元素存在,则返回true。
因此更改将如下所示:
function myFunction() {
var button = document.getElementById("button").querySelector('button');
var hidden = document.getElementsByClassName("change");
for (var i = 0; i < hidden.length; i++) {
if (hidden[i].offsetWidth == 0 && hidden[i].offsetHeight == 0) {
hidden[i].style.setProperty("display", "table-row", "important");
button.innerHTML = 'Show less...';
} else {
hidden[i].style.setProperty("display", "none", "important");
button.innerHTML = 'Past Dates...';
}
}
};
null
function myFunction() {
var button = document.getElementById("button").querySelector('button');
var hidden = document.getElementsByClassName("change");
for (var i = 0; i < hidden.length; i++) {
if (hidden[i].offsetWidth == 0 && hidden[i].offsetHeight == 0) {
hidden[i].style.setProperty("display", "table-row", "important");
button.innerHTML = 'Show less...';
} else {
hidden[i].style.setProperty("display", "none", "important");
button.innerHTML = 'Past Dates...';
}
}
};
#dates {
width: 90%;
margin: auto;
margin-top: 50px;
}
table {
width: 100%;
margin: auto;
border-bottom: 1px solid gray;
text-align: left;
}
tr td {
border-top: 1px solid gray;
margin: 5px 10px;
padding: 20px 10px;
text-align: left;
font-size: 1.3em;
}
th {
font-size: 1.5em;
padding: 10px;
}
.change {
display: none;
}
#button {
width: 25%;
padding: 15px;
margin: auto;
text-align: center;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title> Mystic Mind...</title>
<link href="https://fonts.googleapis.com/css?family=Open+Sans:600" rel="stylesheet">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="css/lightbox.min.css">
<script type="text/javascript" src="css/lightbox-plus-jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="website gallery.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<section class="holder" id="dates">
<div>
<header>Tour Dates</header>
<table>
<tr>
<th>Date</th>
<th>Venue</th>
<th>Location</th>
</tr>
<tr>
<td>August 5, 2018</td>
<td>Parlour</td>
<td>Toronto, Canada</td>
</tr>
<tr>
<td>June 22, 2018</td>
<td>One Loft</td>
<td>Toronto, Canada</td>
</tr>
<tr>
<td>May 4, 2018</td>
<td>Rose In Rio</td>
<td>Buenos Aires, Argentina</td>
</tr>
<tr>
<td>May 3, 2018</td>
<td>AfterOffice @ Deltoro</td>
<td>Buenos Aires, Argentina</td>
</tr>
<tr>
<td>April 18, 2018</td>
<td>Rose In Rio</td>
<td>Buenos Aires, Argentina</td>
</tr>
<tr>
<td>March 15, 2018</td>
<td>Maldita Malta</td>
<td>Buenos Aires, Argentina</td>
</tr>
<tr>
<td>March 2, 2018</td>
<td>Vasily Zatek</td>
<td>Buenos Aires, Argentina</td>
</tr>
<tr>
<td>December 1, 2017</td>
<td>Parlor</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>November 11, 2017</td>
<td>Buennanote</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>October 27, 2017</td>
<td>One Loft</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>September 21, 2017</td>
<td>One Loft</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>August 18, 2017</td>
<td>Parlor</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>July 18, 2017</td>
<td>Parlor</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>June 17, 2017</td>
<td>One Loft</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>June 9, 2017</td>
<td>Wildflower</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>June 2, 2017</td>
<td>One Loft</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>April 6, 2017</td>
<td>Escobar</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>March 10, 2017</td>
<td>One Loft</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>March 4, 2017</td>
<td>Parlor</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>March 2, 2017</td>
<td>Wallen</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>February 2, 2017</td>
<td>Wallen</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>January 26, 2017</td>
<td>Escobar</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>January 20, 2017</td>
<td>Wildflower</td>
<td>Toronto, Canada</td>
</tr>
</table>
<div id="button">
<button class="btn btn-outline-primary waves-effect" onclick="myFunction()">Past Dates...</button>
</div>
</div>
</section>
您有一个类.change
,它具有规则display:none;
我建议依赖于该类,而不是显式更改样式。下面是一个演示:
null
function myFunction() {
var button = document.getElementById("button");
var hidden = document.getElementsByClassName("change");
for(var i = 0; i < hidden.length; i++) {
hidden[i].classList.toggle('change' );
// .toggle() instead of if and else
}
}
#dates {
width: 90%;
margin: auto;
margin-top: 50px;
}
table {
width: 100%;
margin: auto;
border-bottom: 1px solid gray;
text-align: left;
}
tr td {
border-top: 1px solid gray;
margin: 5px 10px;
padding: 20px 10px;
text-align: left;
font-size: 1.3em;
}
th {
font-size: 1.5em;
padding: 10px;
}
.change {
display: none;
}
#button {
width: 25%;
padding: 15px;
margin: auto;
text-align: center;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title> Mystic Mind...</title>
<link href="https://fonts.googleapis.com/css?family=Open+Sans:600" rel="stylesheet">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="css/lightbox.min.css">
<script type="text/javascript" src="css/lightbox-plus-jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="website gallery.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
</head>
<section class="holder" id="dates">
<div>
<header>Tour Dates</header>
<table>
<tr>
<th>Date</th>
<th>Venue</th>
<th>Location</th>
</tr>
<tr>
<td>August 5, 2018</td>
<td>Parlour</td>
<td>Toronto, Canada</td>
</tr>
<tr>
<td>June 22, 2018</td>
<td>One Loft</td>
<td>Toronto, Canada</td>
</tr>
<tr>
<td>May 4, 2018</td>
<td>Rose In Rio</td>
<td>Buenos Aires, Argentina</td>
</tr>
<tr>
<td>May 3, 2018</td>
<td>AfterOffice @ Deltoro</td>
<td>Buenos Aires, Argentina</td>
</tr>
<tr>
<td>April 18, 2018</td>
<td>Rose In Rio</td>
<td>Buenos Aires, Argentina</td>
</tr>
<tr>
<td>March 15, 2018</td>
<td>Maldita Malta</td>
<td>Buenos Aires, Argentina</td>
</tr>
<tr>
<td>March 2, 2018</td>
<td>Vasily Zatek</td>
<td>Buenos Aires, Argentina</td>
</tr>
<tr>
<td>December 1, 2017</td>
<td>Parlor</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>November 11, 2017</td>
<td>Buennanote</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>October 27, 2017</td>
<td>One Loft</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>September 21, 2017</td>
<td>One Loft</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>August 18, 2017</td>
<td>Parlor</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>July 18, 2017</td>
<td>Parlor</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>June 17, 2017</td>
<td>One Loft</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>June 9, 2017</td>
<td>Wildflower</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>June 2, 2017</td>
<td>One Loft</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>April 6, 2017</td>
<td>Escobar</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>March 10, 2017</td>
<td>One Loft</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>March 4, 2017</td>
<td>Parlor</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>March 2, 2017</td>
<td>Wallen</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>February 2, 2017</td>
<td>Wallen</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>January 26, 2017</td>
<td>Escobar</td>
<td>Toronto, Canada</td>
</tr>
<tr class="change">
<td>January 20, 2017</td>
<td>Wildflower</td>
<td>Toronto, Canada</td>
</tr>
</table>
<div id="button">
<button class="btn btn-outline-primary waves-effect" onclick="myFunction()">Past Dates...</button>
</div>
</div>
</section>