需要关于如何让它工作的建议
need advice on how to get this to work
我需要让内容在点击边栏上的 link 时可见,因为它太长了。我有以下 links 并且有用 div 标签分隔的部分。和我从锚标记调用的 JavaScript 函数,但它不起作用,它不会更改内容。你能告诉我怎么做吗?非常感谢
锚标签
<a href="" id="mySelect" onclick="return myFunction();" value="about">
<h4>Who we Are</h4>
</a>
<a href="" id="mySelect" onclick="return myFunction();" value="mission">
<h4>Our Mission & Vission</h4>
</a>
<a href="" id="mySelect" onclick="return myFunction();" value="director">
<h4>Director & Advisory Board</h4>
</a>
版块标签
<div id="about" style="display: block;">default content</div>
<div id="mission" style="display: none;">content</div>
<div id="director" style="display: none;">content</div>
JavaScript
<script>
function myFunction() {
var x = document.getElementById("mySelect");
if (x=="") {
document.getElementById("about").style.display="block";
document.getElementById("mission").style.display="none";
document.getElementById("director").style.display="none";
}
if (x=="about") {
document.getElementById("about").style.display="block";
document.getElementById("mission").style.display="none";
document.getElementById("director").style.display="none";
}
if (x=="mission") {
document.getElementById("about").style.display="none";
document.getElementById("mission").style.display="block";
document.getElementById("director").style.display="none";
}
if (x=="director") {
document.getElementById("about").style.display="none";
document.getElementById("mission").style.display="none";
document.getElementById("director").style.display="block";
}
}
</script>
你绝对不应该有重复的 ID,这在语义上是不正确的,你不应该这样做。
您应该重构您的代码,最好的方法是使用 类。
下面有一个代码可以帮助您更好地理解,这只是识别您的点击的一种方法,当然还有其他方法。
看看我将 this
传递给函数
<!DOCTYPE html>
<html>
<body>
<a href="" class="mySelect" onclick="myFunction(this)" value="about">
<h4>Who we Are</h4>
</a>
<a href="" class="mySelect" onclick="myFunction(this)" value="mission">
<h4>Our Mission & Vission</h4>
</a>
<a href="" class="mySelect" onclick="myFunction(this)" value="director">
<h4>Director & Advisory Board</h4>
</a>
</body>
<script >
function myFunction(x) {
if (x.getAttribute('value')=="about") {
alert(x.getAttribute('value'));
}
if (x.getAttribute('value')=="mission") {
alert(x.getAttribute('value'));
}
if (x.getAttribute('value')=="director") {
alert(x.getAttribute('value'));
}
}
</script>
</html>
这是一个有效的 JSFiddle 和下面的代码。
HTML
<div id="about" style="display: block;">default content</div>
<div id="mission" style="display: none;">content</div>
<div id="director" style="display: none;">content</div>
<a class="mySelect" onclick="myFunction(this)" id="about">
<h4>Who we Are</h4>
</a>
<a class="mySelect" onclick="myFunction(this)" id="mission">
<h4>Our Mission & Vission</h4>
</a>
<a class="mySelect" onclick="myFunction(this)" id="director">
<h4>Director & Advisory Board</h4>
</a>
JS
function myFunction(vm) {
var x = document.getElementsByClassName("mySelect");
var id = vm.id;
if (id == "") {
document.getElementById("about").style.display = "block";
document.getElementById("mission").style.display = "none";
document.getElementById("director").style.display = "none";
}
if (id == "about") {
document.getElementById("about").style.display = "block";
document.getElementById("mission").style.display = "none";
document.getElementById("director").style.display = "none";
}
if (id == "mission") {
document.getElementById("about").style.display = "none";
document.getElementById("mission").style.display = "block";
document.getElementById("director").style.display = "none";
}
if (id == "director") {
document.getElementById("about").style.display = "none";
document.getElementById("mission").style.display = "none";
document.getElementById("director").style.display = "block";
}
}
编辑:
这是两个 JSFiddle
JSFiddle 的行为会让他们表现得有点奇怪,JSFiddle 会在 iframe 中打开 link。由于 JSFiddle 阻止您获取 JSFiddle URL,因此 JSFiddle 中的代码都是模拟的。在普通网站上,您可以取消注释代码并删除其他假代码。
我需要让内容在点击边栏上的 link 时可见,因为它太长了。我有以下 links 并且有用 div 标签分隔的部分。和我从锚标记调用的 JavaScript 函数,但它不起作用,它不会更改内容。你能告诉我怎么做吗?非常感谢
锚标签
<a href="" id="mySelect" onclick="return myFunction();" value="about">
<h4>Who we Are</h4>
</a>
<a href="" id="mySelect" onclick="return myFunction();" value="mission">
<h4>Our Mission & Vission</h4>
</a>
<a href="" id="mySelect" onclick="return myFunction();" value="director">
<h4>Director & Advisory Board</h4>
</a>
版块标签
<div id="about" style="display: block;">default content</div>
<div id="mission" style="display: none;">content</div>
<div id="director" style="display: none;">content</div>
JavaScript
<script>
function myFunction() {
var x = document.getElementById("mySelect");
if (x=="") {
document.getElementById("about").style.display="block";
document.getElementById("mission").style.display="none";
document.getElementById("director").style.display="none";
}
if (x=="about") {
document.getElementById("about").style.display="block";
document.getElementById("mission").style.display="none";
document.getElementById("director").style.display="none";
}
if (x=="mission") {
document.getElementById("about").style.display="none";
document.getElementById("mission").style.display="block";
document.getElementById("director").style.display="none";
}
if (x=="director") {
document.getElementById("about").style.display="none";
document.getElementById("mission").style.display="none";
document.getElementById("director").style.display="block";
}
}
</script>
你绝对不应该有重复的 ID,这在语义上是不正确的,你不应该这样做。
您应该重构您的代码,最好的方法是使用 类。
下面有一个代码可以帮助您更好地理解,这只是识别您的点击的一种方法,当然还有其他方法。
看看我将 this
传递给函数
<!DOCTYPE html>
<html>
<body>
<a href="" class="mySelect" onclick="myFunction(this)" value="about">
<h4>Who we Are</h4>
</a>
<a href="" class="mySelect" onclick="myFunction(this)" value="mission">
<h4>Our Mission & Vission</h4>
</a>
<a href="" class="mySelect" onclick="myFunction(this)" value="director">
<h4>Director & Advisory Board</h4>
</a>
</body>
<script >
function myFunction(x) {
if (x.getAttribute('value')=="about") {
alert(x.getAttribute('value'));
}
if (x.getAttribute('value')=="mission") {
alert(x.getAttribute('value'));
}
if (x.getAttribute('value')=="director") {
alert(x.getAttribute('value'));
}
}
</script>
</html>
这是一个有效的 JSFiddle 和下面的代码。
HTML
<div id="about" style="display: block;">default content</div>
<div id="mission" style="display: none;">content</div>
<div id="director" style="display: none;">content</div>
<a class="mySelect" onclick="myFunction(this)" id="about">
<h4>Who we Are</h4>
</a>
<a class="mySelect" onclick="myFunction(this)" id="mission">
<h4>Our Mission & Vission</h4>
</a>
<a class="mySelect" onclick="myFunction(this)" id="director">
<h4>Director & Advisory Board</h4>
</a>
JS
function myFunction(vm) {
var x = document.getElementsByClassName("mySelect");
var id = vm.id;
if (id == "") {
document.getElementById("about").style.display = "block";
document.getElementById("mission").style.display = "none";
document.getElementById("director").style.display = "none";
}
if (id == "about") {
document.getElementById("about").style.display = "block";
document.getElementById("mission").style.display = "none";
document.getElementById("director").style.display = "none";
}
if (id == "mission") {
document.getElementById("about").style.display = "none";
document.getElementById("mission").style.display = "block";
document.getElementById("director").style.display = "none";
}
if (id == "director") {
document.getElementById("about").style.display = "none";
document.getElementById("mission").style.display = "none";
document.getElementById("director").style.display = "block";
}
}
编辑:
这是两个 JSFiddle
JSFiddle 的行为会让他们表现得有点奇怪,JSFiddle 会在 iframe 中打开 link。由于 JSFiddle 阻止您获取 JSFiddle URL,因此 JSFiddle 中的代码都是模拟的。在普通网站上,您可以取消注释代码并删除其他假代码。