Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript &引用;空或不是对象“;jQuery中的错误_Javascript_Jquery_Internet Explorer 8 - Fatal编程技术网

Javascript &引用;空或不是对象“;jQuery中的错误

Javascript &引用;空或不是对象“;jQuery中的错误,javascript,jquery,internet-explorer-8,Javascript,Jquery,Internet Explorer 8,我的网站可以在除IE8之外的所有浏览器上运行。带有position().left的第四行代码中的以下代码错误为null或不是对象。有人见过这种类型的IE8 jQuery错误吗 $(".navref").click(function(){ var m = Math.floor(($(window).width()-997)/2); m = m < 0 ? 0 : m; //if screen is smaller than 997, force align to left

我的网站可以在除IE8之外的所有浏览器上运行。带有
position().left
的第四行代码中的以下代码错误为null或不是对象。有人见过这种类型的IE8 jQuery错误吗

$(".navref").click(function(){
    var m = Math.floor(($(window).width()-997)/2);
    m = m < 0 ? 0 : m;  //if screen is smaller than 997, force align to left
    var l = $("#"+$(this).attr('rel')).position().left;
    var lt = 200;
    if($(this).attr('rel') == 'page1') lt = 400;
    l = l+(lt-m);
    l = l < 0 ? 0 : l;

    //,onAfter:function(){checkScreens()}
    $('html, body').stop(true,false).scrollTo(l,2000,{easing:'easeInOutCubic'});

    return false;
 });
$(“.navref”)。单击(函数(){
var m=数学地板($(窗口).width()-997)/2);
m=m<0?0:m;//如果屏幕小于997,则强制向左对齐
var l=$(“#”+$(this.attr('rel')).position().left;
var lt=200;
如果($(this).attr('rel')=='page1')lt=400;
l=l+(lt-m);
l=l<0?0:l;
//,onAfter:function(){checkScreens()}
$('html,body').stop(true,false).scrollTo(l,2000,{easing:'easeInOutCubic'});
返回false;
});

该网站是

这告诉您
$(“#”+$(This).attr('rel'))
不匹配任何元素,因此
position()
返回
null
。如果你发现了原因,它应该会解决的

只需将代码更改为:

var id = $(this).attr('rel');
var element = $("#"+id);
var l = element.position().left;

…然后使用F12调试工具,查看
id
并将其与DOM中的内容进行比较,查看具有该id的元素的查询结果,等等。

这告诉您
$(“#“+$(This).attr('rel'))
与任何元素都不匹配,因此
位置()
返回
null
。如果你发现了原因,它应该会解决的

只需将代码更改为:

var id = $(this).attr('rel');
var element = $("#"+id);
var l = element.position().left;

…然后使用F12调试工具进行调试,查看
id
,并将其与DOM中的内容进行比较,查看具有该id的元素的查询结果,等等。

$(this.attr('rel')
=>
this.rel
Math.floor($(window.width()-997)/2)->
($(window.width()-997)/2)0您是否检查了其他浏览器中的代码?它在哪工作?
$(this.attr('rel')
=>
this.rel
Math.floor(($(window.width()-997)/2)->
($(window.width()-997)/2)0您是否检查了其他浏览器中的代码?它在哪工作?如果是,这与IE8无关。如果人们只在浏览器X中签入,就必须停止说它不工作(@gdoron:的确如此,我经常看到它。:-)我并不是说OP在这种情况下做了什么,在跨浏览器检查内容并欺骗自己时,很容易改变不止一件事情。当然,IE可能会继续在
attr
上扮演愚蠢的窃听者,尽管Resig和crew尽了最大努力。(+1关于你对这个问题的评论,顺便说一句)如果是这样,这与IE8无关。如果人们只在浏览器X中签入,就必须停止说它不工作(@gdoron:的确如此,我经常看到它。:-)我并不是说OP在这种情况下做了什么,在跨浏览器检查内容并欺骗自己时,很容易改变不止一件事情。当然,IE可能会继续在
attr
上扮演愚蠢的窃听者,尽管Resig和crew尽了最大努力。(+1关于你对这个问题的评论,顺便说一句。)