我对网络编程和 javascript 比较陌生。我习惯于在非 Web 项目中使用 as3 或 java。
我写了一些 javascript 来显示和隐藏网站上的 div。我希望显示与单击的菜单项相对应的 div 并隐藏所有其他项。
但是,代码不起作用。我已经尝试了几件事,但我显然对 javascript 不够熟悉以使其工作。
基本上我想向我希望显示的 div 添加一个 .visibleContent 类,以便 css3 过渡使其淡入,当类被删除时,css3 过渡将使其淡出。
谁能向我解释我做错了什么?我什至以正确的方式接近这个?我知道 Jquery,但我认为仅仅为此导入该库是矫枉过正的。我想使用javascript本身。
我的 html 中的链接和 div:
<li><a href="javascript:;" onClick='navClick("page1");'>page 1 button</a></li>
<li><a href="javascript:;" onClick='navClick("page2");'>page 2 button</a></li>
<div id="pages">
<div id="page1">
<p> page 1 content </p>
</div>
<div id="page2">
<p> page 2 content </p>
</div>
</div>
这是javascript,请注意我已经从这里复制了hasClass、addClass和removeClass函数:dynamic add/remove style in javascript
var page1 = document.getElementById('page1');
var page2 = document.getElementById('page2');
var pageArray = new Array;
pageArray.push(page1);
pageArray.push(page2);
function hasClass(element,class) {
return element.className.match(new RegExp('(\\s|^)'+class+'(\\s|$)'));
}
function addClass(element,class) {
if (!this.hasClass(element,class)) element.className += " "+class;
}
function removeClass(ele,cls) {
if (hasClass(element,class)) {
var reg = new RegExp('(\\s|^)'+class+'(\\s|$)');
element.className=element.className.replace(reg,' ');
}
}
function navClick(id) {
var e = document.getElementById(id);
for (i = 0; i < pageArray.length; i++) {
if (pageArray[i] == e) {
if (!hasClass(pageArray[i], 'visibleContent')) {
addClass(pageArray[i], 'visibleContent');
}
} else {
if (hasClass(pageArray[i], 'visibleContent')) {
removeClass(pageArray[i], 'visibleContent');
}
}
}
}
这是相关的CSS:
#pages div {
opacity: 0;
position: fixed;
width:55%;
height: 65%;
top: 10%;
left: 100%;
background: #00FF00;
animation fadeOutAnimation 1s linear 1;
}
.visibleContent {
opacity: 1;
position: fixed;
width: 55%;
height: 65%;
top:10%;
left:40%;
background: #00FF00;
animation: fadeInAnimation 1s linear 1;
}
当我直接在 html 标记中将 .visibleContent 类添加到 div 时,内容会按原样显示,当我不将类添加到 div 时,它确实是不可见的。当我使用我的 navClick 函数尝试动态添加类时,什么也没有发生……怎么了?