【发布时间】:2013-04-07 22:06:15
【问题描述】:
我对网络编程和 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 函数:dynamically 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 函数尝试动态添加类时,没有任何反应...... 怎么了?
【问题讨论】:
-
我想我会是第一个说的:为什么不用jQuery?
-
你可以在你的网站/项目中使用 JQuery 吗?
-
当他已经解释了为什么他不想使用 jQuery 时,你为什么还要问他是否不能使用 jQuery?此外,人们应该只在他们已经知道如何自己制作东西时才使用 jQuery,否则人们仍然是新手。
-
Virus721,除了为这么小的功能添加一个庞大的库之外,我完全同意你的观点。在熟悉编程语言本身之前,我不喜欢使用库,因为我希望能够编写自己的代码,而不是被教程、示例和库所束缚。
标签: javascript html web