Javascript 如何在两个div之间切换
我试图在两个div之间切换。例如,onload,我希望左侧内容显示,右侧内容保持隐藏。如果单击右div,我希望左侧内容隐藏,右侧内容显示,反之亦然。我对javascript非常陌生,但这里是我所拥有的。我似乎无法让它工作。请帮忙 以下是我的HTML代码:Javascript 如何在两个div之间切换,javascript,jquery,toggle,toggleclass,Javascript,Jquery,Toggle,Toggleclass,我试图在两个div之间切换。例如,onload,我希望左侧内容显示,右侧内容保持隐藏。如果单击右div,我希望左侧内容隐藏,右侧内容显示,反之亦然。我对javascript非常陌生,但这里是我所拥有的。我似乎无法让它工作。请帮忙 以下是我的HTML代码: <div onclick="toggle_visibility('left');"> Left </div> <div onclick="toggle_visibility('right');">
<div onclick="toggle_visibility('left');">
Left
</div>
<div onclick="toggle_visibility('right');">
Right
</div>
<div id="left" style="display: block;">
This is the content for the left side
<div>
<div id="right" style="display: none;">
This is the content for the ride side
</div>
下面是我正在使用的Javascript:
<script type="text/javascript">
function toggle_visibility(id) {
var e = document.getElementById(id);
if(e.style.display == 'block')
e.style.display = 'none';
else
e.style.display = 'block';
}
</script>
每次仅切换2个图元中1个图元的可见性。当你点击左边,它会消失,但你没有告诉右边出现。尝试:
<div onclick="toggle_visibility('left');toggle_visibility('right');">
Left
</div>
<div onclick="toggle_visibility('right');toggle_visibility('left');">
Right
</div>
既然你把问题标记为jquery,我就假设你对jquery解决方案持开放态度。这会让事情变得非常简单。查看下面的示例JSFIDLE 当然,您需要一些css来设置样式,但单击示例中的div将在两个div之间切换 HTML:
<p id="toggle">
<span> Left </span>
<span> Right </span>
</p>
<div id="left"> LEFT CONTENT </div>
<div id="right"> RIGHT CONTENT </div>
CSS隐藏右DIV onload:
#right { display:none; }
将JavaScript代码放在页面底部
请注意脚本元素如何位于BODY元素的末尾。另外,请注意jQuery代码应该在ready处理程序中:$function{…code…} 对于初学者,缺少的结束标记。讨厌的东西,那些 其次,您需要跟踪当前可见div,以便可以隐藏它。以下几点应该行得通
<html>
<head>
<script type="text/javascript">
top.visible_div_id = 'right';
function toggle_visibility(id) {
var old_e = document.getElementById(top.visible_div_id);
var new_e = document.getElementById(id);
if(old_e) {
console.log('old', old_e, 'none');
old_e.style.display = 'none';
}
console.log('new', new_e, 'block');
new_e.style.display = 'block';
top.visible_div_id = id;
}
</script>
</head>
<body onload="toggle_visibility('left');">
<div onclick="toggle_visibility('left');">
Left
</div>
<div onclick="toggle_visibility('right');" >
Right
</div>
<div id="left" >
This is the content for the left side
</div>
<div id="right" >
This is the content for the ride side
</div>
</body>
</html>
下面是一个在两个html文档之间切换的小示例。当主体加载时,首先调用该函数。您需要将1.html和2.html替换为要在其中翻转的两个页面。如果你想要更长的延迟,用你想要的替换3000。计时器值以毫秒为单位,因此如果需要20秒,则其值为20000
<html>
<head>
<script type="text/javascript">
top.visible_id = 'right';
function toggle_visibility() {
var right_e = document.getElementById('right');
var left_e = document.getElementById('left');
if (top.visible_id == 'right') {
right_e.style.display = 'none';
left_e.style.display = 'block';
top.visible_id = 'left';
} else {
right_e.style.display = 'block';
left_e.style.display = 'none';
top.visible_id = 'right';
}
var t = setTimeout("toggle_visibility()",3000);
}
</script>
</head>
<body onload="toggle_visibility();">
<div id="left" >
<iframe src="1.html"></iframe>
</div>
<div id="right" >
<iframe src="2.html"></iframe>
</div>
</body>
</html>
出于某种原因,我复制了确切的代码,它在本地不工作,但在jsfiddle.net上工作。JQuery库对它有影响吗?@Ryan您也复制了上面的HTML代码吗?你把JavaScript代码放在头上还是身体底部了?我复制了HTML,把JavaScript代码放在头上,把HTML放在身体里。@Ryan把JavaScript代码放在头上是个坏主意。我将更新我的答案,并说明如何放置JavaScript代码。好的,太好了。另外,为了我的学习目的,我只写了2个月的代码,你能给我一个快速的解释,为什么把Javascript放在头上是个坏主意吗?
<html>
<head>
<script type="text/javascript">
top.visible_div_id = 'right';
function toggle_visibility(id) {
var old_e = document.getElementById(top.visible_div_id);
var new_e = document.getElementById(id);
if(old_e) {
console.log('old', old_e, 'none');
old_e.style.display = 'none';
}
console.log('new', new_e, 'block');
new_e.style.display = 'block';
top.visible_div_id = id;
}
</script>
</head>
<body onload="toggle_visibility('left');">
<div onclick="toggle_visibility('left');">
Left
</div>
<div onclick="toggle_visibility('right');" >
Right
</div>
<div id="left" >
This is the content for the left side
</div>
<div id="right" >
This is the content for the ride side
</div>
</body>
</html>
<html>
<head>
<script type="text/javascript">
top.visible_id = 'right';
function toggle_visibility() {
var right_e = document.getElementById('right');
var left_e = document.getElementById('left');
if (top.visible_id == 'right') {
right_e.style.display = 'none';
left_e.style.display = 'block';
top.visible_id = 'left';
} else {
right_e.style.display = 'block';
left_e.style.display = 'none';
top.visible_id = 'right';
}
var t = setTimeout("toggle_visibility()",3000);
}
</script>
</head>
<body onload="toggle_visibility();">
<div id="left" >
<iframe src="1.html"></iframe>
</div>
<div id="right" >
<iframe src="2.html"></iframe>
</div>
</body>
</html>