【问题标题】:Javascript sliding menus not workingJavascript滑动菜单不起作用
【发布时间】:2013-06-22 17:04:05
【问题描述】:

这个 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;
    }
}

【问题讨论】:

标签: javascript slidingmenu object-detection


【解决方案1】:

只是看看你的代码,我注意到你有这一行

var slideList = this.id + ".ul[0]"; //stores object ref to the 1st ul element nested

看起来您正在尝试获取 ul 数组的第一个元素,但由于您将其放在引号中,您的浏览器可能会将其视为字符串。假设 this.id 等于字符串“ul-element”,此变量将输出“ul-element.ul[0]”作为字符串,而不是获取 ul[0] 处的元素。

出于好奇,您是否考虑过使用 jquery 让您的网站执行此操作?这将节省相当多的时间和头痛,虽然如果你这样做是为了个人项目,我理解这样做:)

-弗兰克

【讨论】:

  • 是的,这是一个简短的 javascript 课程,我正在学习 - 我是初学者!
  • 该行代码的指令是“创建一个名为'slideList'的变量,该变量存储对嵌套在当前对象中的第一个ul元素的对象引用(由'this'关键字引用)。
  • 嘿弗兰克-我想不明白:(
  • 嗨 Vynce,我好几天没上网了,抱歉没能早点回复你。我不确定您是否已经解决了这个问题或者是否必须提交项目,但我发现了一些可能会有所帮助的东西。我不确定这是否会有所帮助,但这是我认为可能有效的一种方法 var element = $('id') return element.match('ul') ?元素:element.up('ul');这可能会超出您要查找的元素,因此您也可以尝试内置的 .previous 函数。我认为 .up 或 .previous 可以让您朝着正确的方向前进。
  • 这就是答案,坦率地说,谢谢你的帮助! var slideList = this.getElementsByTagName("ul")[0];
【解决方案2】:

var slideList = this.getElementsByTagName("ul")[0];

【讨论】:

    猜你喜欢
    • 2015-09-12
    • 1970-01-01
    • 2015-07-26
    • 2018-05-29
    • 1970-01-01
    • 1970-01-01
    • 2019-05-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多