我正在尝试制作网页,其中中心有一个正在更改的div,而不是转到不同的页面。
最终,我希望新的div在点击箭头时从右侧或左侧流入中心。但首先我想让div在点击箭头时出现并消失,但遗憾的是这不起作用。
这是我的javascript:
<script>
function changeToHome() {
document.getElementById("mainmain").style.display="block";
document.getElementById("mainmain2").style.display="none";
document.getElementById("mainmain3").style.display="none";
document.getElementById("mainmain4").style.display="none";
}
function changeToStudy() {
document.getElementById("mainmain").style.display="none";
document.getElementById("mainmain2").style.display="block";
document.getElementById("mainmain3").style.display="none";
document.getElementById("mainmain4").style.display="none";
}
function changeToJob() {
document.getElementById("mainmain").style.display="none";
document.getElementById("mainmain2").style.display="none";
document.getElementById("mainmain3").style.display="block";
document.getElementById("mainmain4").style.display="none";
}
function changeToContact() {
document.getElementById("mainmain").style.display="none";
document.getElementById("mainmain2").style.display="none";
document.getElementById("mainmain3").style.display="none";
document.getElementById("mainmain4").style.display="block";
}
function changePageRight() {
var displayValue5 = document.getElementById('mainmain').style.display;
var displayValue5 = document.getElementById('mainmain2').style.display;
var displayValue6 = document.getElementById('mainmain3').style.display;
var displayValue7 = document.getElementById('mainmain4').style.display;
if (document.getElementById('mainmain').style.display == "block") {
document.getElementById("mainmain").style.display="none";
document.getElementById("mainmain2").style.display="block";
}
else if (document.getElementById('mainmain2').style.display == "block") {
document.getElementById("mainmain2").style.display="none";
document.getElementById("mainmain3").style.display="block";
}
else if (document.getElementById('mainmain3').style.display == "block") {
document.getElementById("mainmain3").style.display="none";
document.getElementById("mainmain4").style.display="block";
}
else if (displayValue8 == block) {}
}
function changePageLeft() {
var displayValue = document.getElementById('mainmain').style.display;
var displayValue2 = document.getElementById('mainmain2').style.display;
var displayValue3 = document.getElementById('mainmain3').style.display;
var displayValue4 = document.getElementById('mainmain4').style.display;
if (displayValue == "block") { }
else if (displayValue2 == "block") {
document.getElementById("mainmain").style.display="block";
document.getElementById("mainmain2").style.display="none";
}
else if (displayValue3 == "block") {
document.getElementById("mainmain2").style.display="block";
document.getElementById("mainmain3").style.display="none";
}
else if (displayValue4 === "block") {
document.getElementById("mainmain3").style.display="block";
document.getElementById("mainmain4").style.display="none";
}
}
</script>
现在我有几个看起来像这样的div:
<div id="mainmain4">
<img style="width:400px;height:327px;margin-left:auto;margin-right:auto;display:block;" src="Untitled-22.png" />
<h2> My name </h2>
<p>Hi,</p>
<p>Some text</p>
</div>
使用这些css atributes:
#mainmain {
float: left;
width: 575px;
display: block;
position: relative;
}
所有其他div都有display: none;
所以我可以将其更改为阻止和阻止为无阻塞的div。
出于某种原因,当我点击菜单中的一个按钮(激活changeToX()函数)后,箭头效果很好。但在此之前,当你第一次访问网站时,却没有。
有人能解释我的错误吗?
答案 0 :(得分:1)
您不会告诉浏览器在加载时应显示div
。您可以使用onload
事件:
<body onload="changeToHome()">
另外一个提示:您可能不想使用inline JavaScript and CSS。
答案 1 :(得分:0)
jQuery就是这么简单:
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<a href="#" class="toggle-container" data-container="#mainmain">toggle!</a>
<div id="mainmain">test text</div>
<script>
// you need this, only apply javascript when all html (dom) is loaded:
$(document).ready(function() {
$('.toggle-container').on('click', function(e) {
e.preventDefault(); // this prevents the real href to '#'
// .toggle() is like "on / off" switch for hiding and showing a container
$($(this).data('container')).toggle();
});
});
</script>
此功能可以重复使用,因为它基于类而不是id。
检查此JSFiddle:http://jsfiddle.net/r8L6xg15/
答案 2 :(得分:0)
也许这有一些用处。我试图做出类似页面控件的行为。您可以选择任何容器div并在其中放置具有“page”类的元素。 JavaScript代码可让您使用按钮进行导航。
通过JavaScript添加按钮可以使它更加华丽。你拥有的基本上是一个页面列表,通常显示为常规div,但是当脚本启动时,它会将它们更改为页面控件。
你可以为任何父元素调用它,从这个意义上说它的行为有点像jQuery插件。不过,它都是原生JavaScript。我希望,而不是太多的代码。就像你说的那样,我认为最初学习JavaScript是件好事。它本身非常强大,而且它变得越来越强大。 jQuery添加了许多便利功能,并在浏览器不支持某些功能或实现不同的情况下提供回退。但是对于许多任务来说,裸JavaScript可以做得很好,而且知道你的方法肯定不会有害。
按下底部的“运行此代码段”按钮,查看其实际效果。
function Pages(element)
{
// Some initialization
var activePage;
// Find all pages within this element.
var pages = document.querySelectorAll('.page');
var maxPage = pages.length - 1;
// Function to toggle the active page.
var setPage = function(index)
{
activePage = index;
for (p = 0; p <= maxPage; p++)
{
if (p == activePage)
pages[p].className = 'page active';
else
pages[p].className = 'page inactive';
}
}
// Select the first page by default.
setPage(0);
// Handler for 'previous'
element.querySelector('.prev').onclick = function()
{
if (activePage == 0)
return;
setPage(activePage - 1);
}
// Handler for 'next'
element.querySelector('.next').onclick = function()
{
if (activePage == maxPage)
return;
setPage(activePage + 1);
}
// Add a class to the element itself. This way, you can already change CSS styling
// depending on whether this code is loaded or not. So in case of an error, the
// divs are just all show underneath each other, and the nav buttons are hidden.
element.className = element.className + ' js';
}
Pages(document.querySelector('.pages'));
.pages .page {
display: block;
padding: 40px;
border: 1px solid blue;
}
.pages .page.inactive {
display: none;
}
.pages .nav {
display: none;
}
.pages.js .nav {
display: inline-block;
}
<div class="pages">
<button class="nav prev">Last</button>
<button class="nav next">Next</button>
<div class="page">Page 1 - Introduction and other blah</div>
<div class="page">Page 2 - Who am I? Who are you? Who is Dr Who?</div>
<div class="page">Page 3 - Overview of our products
<ul><li>Foo</li><li>Bar</li><li>Bar Pro</li></ul>
</div>
<div class="page">Page 4 - FAQ</div>
<div class="page">Page 5 - Contact information</div>
</div>
className
,如果有人想自己添加类,那就太糟糕了。 jQuery为此提供了addClass
和removeClass
,这很有帮助。还有独立的图书馆可以帮助你解决这个问题。