仅在实现的文件中起作用

时间:2011-07-23 12:33:36

标签: javascript jquery

我有一个带有两个函数的js文件,一个是普通的javascript,一个是使用jQuery。我想要两个都在窗口加载。但如果我同时启用两者,只有普通的javascript函数可以工作。当我禁用“highliter”功能时,“slideSwitch”工作正常。问题是什么?我该如何解决这个问题?

function slideSwitch() {        
    var active = $('#slideshow img.active'),
    next;

    if (active.length == 0){
        active = $('#slideshow img:last');
    };

    next = active.next().length ? active.next() : $('#slideshow img:first');

    active.addClass('last-active');

    next.addClass('active')
        .css({opacity:0.0})
        .animate({opacity:1.0}, 1000, function() {            
            active.removeClass('active last-active');
        });
};


function startSlideShow() {
    setInterval("slideSwitch()", 5000);
};


function highliter() {
    var current = document.location.pathname;
    var nav = document.getElementById('pages');
    var a_tags = nav.getElementsByTagName('a');
    for (var i = 0; i <= a_tags.length; i++) {
        if (a_tags[i].getAttribute('href') === current) {
            a_tags[i].parentElement.className = 'highlited';
        }
    }
};


window.onload = function() {
    highliter();
    startSlideShow();
};

2 个答案:

答案 0 :(得分:1)

highliter()中是否发生javascript错误?我看到两个可能的问题:

  1. 你的for循环正在检查&lt; = length而不是&lt;长度,意味着你超过了数组的大小。
  2. 我可以看到页面上没有ID为“pages”的元素,这意味着nav为null,导航后续访问会导致空引用。

答案 1 :(得分:1)

不是parentElement,而是parentNode