この JavaScript スライド メニューは機能しません。デバッガーが表示する唯一のエラーは、最初の IF ステートメントがブロック コマンドであり、中括弧が必要であるということですが、これは理解できません。
誰でも明らかなエラーが表示されますか? 「this」キーワードを正しく使用しているかどうかわかりません (関数 showSlide 内の変数 slideList と同様に...助けてください & 私の書式設定 (空白) に関するフィードバックも大歓迎です!
window.onload = makeMenus;
var currentSlide = null;
var timeID = null;
var leftPos = 0;
function makeMenus() {
var slideMenus = new Array();
var allElems = document.getElementsByTagName("*");
for (var i = 0; i < allElems.length; i++) {
if (allElems[i].className == "slideMenus") menus.push(allElems[i]);
}
for (var i = 0; i < slideMenus.length; i++) {
slideMenus[i].onclick = showSlide;
slideMenus[i].ul.style.left = "0px"; //for each object in slideMenus Array, ref 1st ul element within that object and set the value of the ul elements left style property to 0px
}
document.getElementById("head").onclick = closeSlide;
document.getElementById("main").onclick = closeSlide;
}
function showSlide() {
var slideList = this.id + ".ul[0]"; //stores object ref to the 1st ul element nested within the current object.
if (currentSlide !== null) {
closeSlide();
} else {
closeSlide();
currentSlide = slideList;
currentSlide.style.display = "block";
timeID = setInterval("moveSlide()", 1);
}
}
function closeSlide() {
if (currentSlide !== null) {
clearInterval(timeID);
currentSlide.style.left = "0px";
currentSlide.style.display = "none";
currentSlide = null;
}
}
function moveSlide() {
if ((leftPos + 5) <= 220) {
currentSlide.style.left = leftPos + "px"
} else {
clearInterval(timeID);
leftPos = 0;
}
}