相同的浏览器版本,2个不同的javascript处理

时间:2011-01-27 16:55:17

标签: javascript jquery sharepoint-2007

问题解决了:我删除了第一个功能,因为它不需要,现在它可以在所有浏览器中使用。感谢帖子!


我的问题是,我有一个javascript,它在一台服务器上运行完美,没有任何问题在IE中。但在另一台服务器上,我在IE中给出了2个错误。

  1. 它声称我的offset()。top是Null或者不是对象。
  2. 我的淡入淡出效果甚至没有变得活跃。
  3. 然后我又遇到了另一个巨大的问题,那就是FireFox NON中的一切都有效。

    OPS:这是一个webpart,因此在网站上运行的其他javascripts可能会干涉我试图在这里执行的javascript。但我不确定。

    我已经在两台服务器上的IE 8.0.7600.16385中测试了这个webpart。

    脚本:

    <script type="text/javascript" 
    src="/_layouts/Progressive/Javascripts/jquery-1.4.3.js"></script>
    
    <script type="text/javascript">
    (function($) {
        $.fn.goTo = function() {
            // This is where IE on the second server claims the error to be.
            $('html, body').animate({scrollTop: $(this).offset().top + 'px'}, 'fast');
            return this;
        }
    })(jQuery);
    
    function showParagraphs(sender) {
        var id = sender.getAttribute('href');
        if ($('#<%=paragraph.ClientID%>').hasClass("readable")) {
            $('#<%=paragraph.ClientID%>').removeClass("readable");
            highlightSelected(id);
        }
        else {
            $('#<%=paragraph.ClientID%>').addClass("readable");
            rmvClass(id);
        }
    };
    
    function highlightSelected(id) {
        $(id).goTo();
        $(id).addClass("reading");
        // This part is what isn't activated on the second server.
        $('.reading').fadeOut(400).fadeIn(400).fadeOut(400).fadeIn(400);
        // .reading only adds a gray background to the DIV.
    };
    
    function rmvClass(id) {
        $('div').each(function() {
            if ($(this).hasClass("reading")) {
                $(this).removeClass("reading");
            }
        });
    }
    
    function toTop() {
        $('div').each(function() {
            $(this).removeClass("reading");
        });
        $('#<%=paragraph.ClientID%>').addClass("readable");
    }
    
    $(document).ready(function() {
        $('#<%=q.ClientID%>').find('dd').hide().end().find('dt').click(function() {
            $(this).next().slideToggle("fast");
        });
    
        $("#<%=q.ClientID%> dt").click(function() {
            if ($(this).hasClass("selected")) {
                $(this).removeClass("selected");
            }
            else {
                $(this).addClass("selected");
            }
        });
    });
    </script>
    

    有任何想法或建议吗?

1 个答案:

答案 0 :(得分:0)

$(id)

返回一个空的jQuery对象,然后“.offset()”将返回null。你用某个东西调用了“highlightSelected”代码和“href”值,所以也许你认为它是一个与页面上某些内容相对应的“id”值,实际上并非如此。但是,很难确定,因为你没有发布任何相关的HTML,你甚至没有显示“showParagraphs()”被调用的地方!