私はWebプログラミングとJavaScriptにかなり慣れていません。私は Web 以外のプロジェクトで as3 または Java を使用することに慣れています。
Web サイトで div を表示および非表示にするための JavaScript を少し書きました。クリックしたメニュー項目に対応する 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関数をここからコピーしたことに注意してください。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;
}
.visibleContent クラスを div に直接 html マークアップで追加すると、コンテンツが正常に表示されます。クラスを div に追加しないと、実際には表示されません。navClick 関数を使用してクラスを動的に追加しようとしても、何も起こりません...何が問題なのですか?