我想为我的博客帖子制作一个标签系统。如果单击相应的标记,则只应显示包含此标记的帖子并隐藏其余标记。所以我试着写一个onClick函数,但它失败了。为什么呢?
这是帖子的HTML:
<div class="post lorem">
<div class="postTitle">
<h1>Lorem</h1>
</div>
<div class="postInfo">Tags: <a onClick="sortPosts('lorem');">Lorem</a></div>
<div class="postText">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</div>
</div>
<div class="post ipsum dolar">
<div class="postTitle">
<h1>Ipsum dolar</h1>
</div>
<div class="postInfo">Tags: <a onClick="sortPosts('ipsum');">Ipsum</a> · <a onClick="sortPosts('dolar');">Dolar</a></div>
<div class="postText">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</div>
</div>
<div class="post dolar">
<div class="postTitle">
<h1>Dolar</h1>
</div>
<div class="postInfo">Tags: <a onClick="sortPosts('dolar');">Dolar</a></div>
<div class="postText">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</div>
</div>
CSS:
.post {
width: 90%;
padding: 5%;
font-family: sans-serif;
}
.postInfo {
font-style: italic;
margin-bottom: 20px;
}
使用Javascript:
function sortPosts(tag) {
if (document.getElementsByClassName('.post tag)')) {
show();
} else {
hide();
}
}
所有在一起fiddle ...
答案 0 :(得分:1)
您必须使用以下
var elements = document.getElementsByClassName('.post ' + tag );
现在,如果有任何匹配的元素,您将迭代它们并将它们的style.display属性设置为none。
注意:使用jQuery可能会更容易;-)。