实现导航栏以加载<div>的链接点击

时间:2017-08-26 09:32:32

标签: javascript jquery html css

我正在尝试在左侧实施导航侧边栏,其中包含链接列表(<a>),这样点击每个链接时,相应的<div>将会加载到右侧。

我在onclick中拥有<a>属性的功能时。它在浏览器控制台上给我错误。

  

未捕获的ReferenceError:未定义callFunction

这是我的实施:

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
	function callFunction(){alert("Load divs");}
});
</script>

<style>
div.container {
    width: 100%;
    border: 1px solid gray;
}

header, footer {
    padding: 1em;
    color: white;
    background-color: powderblue;
    clear: left;
    text-align: center;
}

nav {
    float: left;
    max-width: 160px;
    margin: 0;
    padding: 1em;
}

nav ul {
    list-style-type: none;
    padding: 0;
}
   
nav ul a {
    text-decoration: none;
}

article {
    margin-left: 170px;
    border-left: 1px solid gray;
    padding: 1em;
    overflow: hidden;
}
</style>
</head>
<body>

<div class="container">

<header>
   <h1>My Company</h1>
</header>
  
<nav>
  <ul>
    <li><a href="#" onclick="callFunction()">Link1</a></li>
    <li><a href="#" onclick="callFunction()">Link2</a></li>
    <li><a href="#" onclick="callFunction()">Link3</a></li>
  </ul>
</nav>

<!--<div id="Link1" class="class1">
	<h1>Link1</h1>
	<p>Link1 detail</p>
</div>

<div id="Link2" class="class1">
	<h1>Link2</h1>
	<p>Link2 detail</p>
</div>-->

<footer>Copyright &copy; myCompany</footer>

</div>

</body>
</html>

我的要求是有一个Links和s的列表,其中s应该被隐藏,并且只有在点击相应的链接时才会出现。

2 个答案:

答案 0 :(得分:0)

以下是适合您的代码。

  1. <div>未呈现/显示。

  2. 点击链接(<a>)后,会显示相应的<div>

  3. 维护导航侧栏。

  4. &#13;
    &#13;
    <!DOCTYPE html>
    <html>
    <head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    
    <script type="text/javascript">
    
    	function loadContent(selector){
    		$("#loadOnClick").html($(selector).html());
    	};
    
    	
    	$(document).ready(function(){
        
    		loadContent("#userGuide");
        
        });
    </script>
    <style>
    div.container11 {
        width: 100%;
        
    }
    section.container1{
    	display: -webkit-flex; /* Safari */
    	display: flex;
    }
    
    .displayInline{
    	-webkit-flex: 1;  /* Safari 6.1+ */
        -ms-flex: 1;  /* IE 10 */    
        flex: auto;
    }
    
    header, footer {
        padding: 1em;
        color: white;
        background-color: powderblue;
        clear: left;
        text-align: center;
    }
    
    nav {
    	border-right: 2px solid gray;
    }
    
    nav ul {
        list-style-type: none;
        padding-top: 5px;
    }
       
    nav ul a {
        text-decoration: none;
    	line-height: 30px;
    }
    
    div#loadOnClick {
    	float: right;
    }
    
     .displayOnClick{
    	display: none;
     }
    </style>
    </head>
    <body>
    
    <div class="container">
    
    <header>
       <h1>My Company</h1>
    </header>
    
     <section id="container1">
    	<nav class="displayInLine" style="width: 20%; float: left;">
    	  <ul>
    		<li><a href="#userGuide" class="quickLinks" onclick='loadContent("#userGuide")'>User Guide</a></li>
    		<li><a href="#SOP" class="quickLinks" onclick='loadContent("#SOP")'>SOP</a></li>
    		<li><a href="#procedurePages" class="quickLinks" onclick='loadContent("#procedurePages")'>Procedure pages</a></li>
    		<li><a href="#departmentInformation" class="quickLinks" onclick='loadContent("#departmentInformation")'>Department information</a></li>
    		<li><a href="#hoursOfOperations" class="quickLinks" onclick='loadContent("#hoursOfOperations")'>Hours of operations</a></li>
    	  </ul>
    	</nav>
    
    	<div class="displayInLine" id="loadOnClick" style="width:75%; float: right;">
    		
    	</div>
    </section>
    
    <div id="userGuide" class="displayOnClick">
    	<h1>User Guide</h1>
    	<p>This is the userguide for employees</p>
    </div>
    
    <div id="SOP" class="displayOnClick">
    	<h1>SOP</h1>
    	<p>This is the Statement of purpose for employees</p>
    </div>
    
    <div id="procedurePages" class="displayOnClick">
    	<h1>Procedure pages</h1>
    	<p>This is the Procedure pages for employees</p>
    </div>
    
    <div id="departmentInformation" class="displayOnClick">
    	<h1>Department information</h1>
    	<p>This is the Department information for employees</p>
    </div>
    
    <div id="hoursOfOperations" class="displayOnClick">
    	<h1>Hours of operations</h1>
    	<p>This is the Hours of operations for employees</p>
    </div>
    
    <footer>Copyright &copy; Om Sao</footer>
    
    </div>
    
    </body>
    </html>
    &#13;
    &#13;
    &#13;

答案 1 :(得分:0)

您不需要在callFunction()状态上调用$(document).ready,因为只有在加载页面时才会调用它,并且在文档准备好/加载时,会抛出错误。因此,将定义置于$(document).ready之外。

<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
function callFunction(){alert("Load divs");}
</script>

<style>
div.container {
    width: 100%;
    border: 1px solid gray;
}

header, footer {
    padding: 1em;
    color: white;
    background-color: powderblue;
    clear: left;
    text-align: center;
}

nav {
    float: left;
    max-width: 160px;
    margin: 0;
    padding: 1em;
}

nav ul {
    list-style-type: none;
    padding: 0;
}
   
nav ul a {
    text-decoration: none;
}

article {
    margin-left: 170px;
    border-left: 1px solid gray;
    padding: 1em;
    overflow: hidden;
}
</style>
</head>
<body>

<div class="container">

<header>
   <h1>My Company</h1>
</header>
  
<nav>
  <ul>
    <li><a href="#" onclick="callFunction()">Link1</a></li>
    <li><a href="#" onclick="callFunction()">Link2</a></li>
    <li><a href="#" onclick="callFunction()">Link3</a></li>
  </ul>
</nav>

<!--<div id="Link1" class="class1">
	<h1>Link1</h1>
	<p>Link1 detail</p>
</div>

<div id="Link2" class="class1">
	<h1>Link2</h1>
	<p>Link2 detail</p>
</div>-->

<footer>Copyright &copy; myCompany</footer>

</div>

</body>
</html>