JavaScript在单击时显示和隐藏元素
请原谅我的无知,我不知道我在做什么,但我正在努力 我试图通过搜索找到答案,但在jQuery中只得到了一个函数结果。由于这是一个很小的部分,我认为最好只使用普通的JavaScript,而不是加载整个jQuery库 有人知道我如何/是否可以实现下面相同的功能,但只使用普通JavaScript?基本上,我想做的是当点击butt1时,无序列表链接将被隐藏,div box1将显示:JavaScript在单击时显示和隐藏元素,javascript,Javascript,请原谅我的无知,我不知道我在做什么,但我正在努力 我试图通过搜索找到答案,但在jQuery中只得到了一个函数结果。由于这是一个很小的部分,我认为最好只使用普通的JavaScript,而不是加载整个jQuery库 有人知道我如何/是否可以实现下面相同的功能,但只使用普通JavaScript?基本上,我想做的是当点击butt1时,无序列表链接将被隐藏,div box1将显示: <html> <head> <title>qwerty</title&g
<html>
<head>
<title>qwerty</title>
<style type="text/css">
.box1 {background: red;}
</style>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script type="text/javascript">
$("#butt1").live("click", show_box1);
function show_box1(event) {
$("#links").css("display", "none");
$(".box1").css("display", "inline");
}
</script>
</head>
<body>
<ul id="links">
<li id="butt1"><a href="#">blah</a></li>
<li id="butt2"><a href="#">blah</a></li>
<li id="butt3"><a href="#">blah</a></li>
</ul>
<div class="box1" style="display: none;">You clicked butt1!</div>
</body>
</html>
这里有一个链接,上面是一个工作示例:-这是我想要复制的功能
我要向所有花点时间的人表示感谢- 您可以使用getElementById选择使用等效于$something的id的元素,使用GetElementsByCassName根据等效于$something的类名选择元素,并且可以使用style属性将显示样式设置为等效于jQuery.css方法:
但是请注意,旧版本的IE不支持GetElementsByCassName,这就是为什么jQuery对小事情也有用的原因——它缩短了代码并消除了所有恼人的浏览器差异
此外,上面的代码和jQuery之间的一个主要区别是使用了.live jQuery方法,该方法监视DOM并将事件附加到与选择器匹配的任何元素,无论它是在DOM中还是将来添加的。对于上面的代码,如果在代码运行时DOM中还没有id为butt1的元素,您将得到一个TypeError,因为getElementById将返回null
可能成为:
document.getElementById('links').style.display = 'none';
实际上,加载jQuery很有意义,因为您是从GoogleCDN进行加载的。很多网站都使用它,所以很有可能在某个时候至少你的一些用户已经下载了它。另外,jquerycompressed是一个非常小的下载。如此之多以至于jQuery风格代码的可读性是值得的。jQuery的生产压缩版本只有31KB。把它装进去。如果不需要UI,则不必加载它。在Jquery中,执行您想要的操作所需的代码量并不值得这么简单。另外,正如JamWaffles所说,如果还有其他地方您将使用Jquery,那么只需加载并使用它。这意味着您只有一个框
window.onload = function() {
var links = document.getElementById("links"),
box1 = document.getElementsByClassName("box1")[0];
links.onclick = function() {
links.style.display = "none";
box1.style.display = "inline";
};
};
好的,虽然最简单的方法是用jQuery风格实现,但您仍然可以在Javascript中复制该功能 这里的关键是getElementById函数,该函数用于获取要操作的特定元素,然后您只需根据上下文将element.style.display属性设置为“none”,将其隐藏时设置为“block”或“inline” 这是我的破绽
<head>
<title>qwerty</title>
<style type="text/css">
#box1 {background: red;}
#box2 {background: blue;}
#box3 {background: yellow;}
</style>
<script type="text/javascript">
function toggle_visibility(id) {
var ul = document.getElementById('links');
var box = document.getElementById(id);
if(ul.style.display == 'none')
{
ul.style.display = 'block';
box.style.display = 'block';
}
else
{
ul.style.display = 'none';
box.style.display = 'block';
}
}
</script>
</head>
<body>
<ul id="links">
<li id="butt1"><a href="#" onclick="toggle_visibility('box1');">blah</a></li>
<li id="butt2"><a href="#" onclick="toggle_visibility('box2');">blah</a></li>
<li id="butt3"><a href="#" onclick="toggle_visibility('box3');">blah</a></li>
</ul>
<div id="box1" style="display: none;">You clicked butt1!</div>
<div id="box2" style="display: none;">You clicked butt2!</div>
<div id="box3" style="display: none;">You clicked butt3!</div>
</body>
</html>
如果您已经或将要对站点的其他部分使用jQuery,那么您也可以使用它。
window.onload = function() {
var links = document.getElementById("links"),
box1 = document.getElementsByClassName("box1")[0];
links.onclick = function() {
links.style.display = "none";
box1.style.display = "inline";
};
};
<head>
<title>qwerty</title>
<style type="text/css">
#box1 {background: red;}
#box2 {background: blue;}
#box3 {background: yellow;}
</style>
<script type="text/javascript">
function toggle_visibility(id) {
var ul = document.getElementById('links');
var box = document.getElementById(id);
if(ul.style.display == 'none')
{
ul.style.display = 'block';
box.style.display = 'block';
}
else
{
ul.style.display = 'none';
box.style.display = 'block';
}
}
</script>
</head>
<body>
<ul id="links">
<li id="butt1"><a href="#" onclick="toggle_visibility('box1');">blah</a></li>
<li id="butt2"><a href="#" onclick="toggle_visibility('box2');">blah</a></li>
<li id="butt3"><a href="#" onclick="toggle_visibility('box3');">blah</a></li>
</ul>
<div id="box1" style="display: none;">You clicked butt1!</div>
<div id="box2" style="display: none;">You clicked butt2!</div>
<div id="box3" style="display: none;">You clicked butt3!</div>
</body>
</html>