我有以下代码:
<div id="nav">
<ul>
<li id="tabOne" class="first current"><a href="./CS1.html" target="SheetView">Page One</a></li>
<li id="tabTwo"><a href="./CS2.html" target="SheetView">Page Two</a></li>
<li id="tabThree"><a href="./CS3.html" target="SheetView">Page Three</li>
<li id="tabFour"><a href="./CS4.html" target="SheetView">Page Four</a></li>
<li id="tabFive"><a href="./CS5.html" target="SheetView">Page Five</a></li>
<li id="tabSix"><a href="./CS6.html" target="SheetView">Page Six</a></li>
</ul>
这会将所选页面加载到名为“SheetView”的 iframe 中。我需要做的是,当单击当前未选择的选项时,使用 JavaScript 来更改类。我应该说我已经在 CSS 中设置了当前的类。我只是没有办法触发它。
我想添加一个 onclick 事件<UL>
在那里打电话onclick="Javascript:changeCurrent();"
但有一个问题(实际上是四个):
- Is
<ul onclick="JavaScript:changeCurrent();>
我需要在哪里举办活动?
- 使更改发生的最终 JavaScript 是什么?
- 如何使第一个选项默认设置为当前选项?
- 有没有办法阻止当前选定的选项成为活动链接?
我找到了一些不同的例子,但我无法调整它们以适合我。非常感激任何的帮助。
由于您指定需要非 jQuery 响应,因此这里有一个可以适当切换的函数:
function toggleNavSelected(el){
var list = document.getElementById('nav').children[0];
for(var i=0; i<list.children.length; i++){
var cur = list.children[i];
if(el==cur){
cur.classList.add("current");
cur.firstChild.onclick = (function(){
toggleNavSelected(this.parentElement);
return false;
});
} else {
if(cur.classList.contains("current")){
cur.classList.remove("current");
}
cur.firstChild.onclick = (function(){
toggleNavSelected(this.parentElement);
});
}
}
}
向每个 LI 添加一个 onclick 处理程序(onclick="toggleNavSelected(this);"
)或在菜单加载后执行以下命令:
var list = document.getElementById('nav').children[0];
for(var i=0; i<list.children.length; i++){
var el = list.children[i];
el.firstChild.onclick = (function(){
toggleNavSelected(this.parentElement);
});
}
Demo: http://jsfiddle.net/bWY7P/2/ http://jsfiddle.net/bWY7P/2/
(注意:JSFiddle 脚本有一个小区别;它添加了一个return false;
到 onclick 函数,这样您就可以使用它,而无需实际遵循 HREF 属性的链接。不要在实时代码中使用该行)
解释:
该函数查看每个LI
内的元素#nav
元素。
如果该元素是传递给函数的元素,那么它会添加该类.current
.
否则,它会删除该类.current
(如果存在)。
第二部分将一个函数绑定到每个的 onclick 事件a
调用的元素toggleNavSelected()
函数并传递其父元素(li
) 作为参数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)