Javascript InternetExplorer说对象没有';不支持此属性或方法

Javascript InternetExplorer说对象没有';不支持此属性或方法,javascript,jquery,debugging,mootools,Javascript,Jquery,Debugging,Mootools,这一行是79: window.addEvent('domready', function(){ mySlide = new Fx.Slide('advert'); mySlide.hide(); }); 它也不喜欢这一行: this.wrapper = new Element('div', { 'styles': $extend(

这一行是79:

window.addEvent('domready', function(){     
    mySlide = new Fx.Slide('advert');
    mySlide.hide();
});
它也不喜欢这一行:

this.wrapper = new Element('div',
                           {
                              'styles': $extend(
                                                this.element.getStyles('margin'), 
                                                {'overflow': ''}
                                               )
                           })
                .injectAfter(this.element)
                .adopt(this.element);

有人知道为什么会这样吗?有人知道如何解决这个问题吗?我正在使用jQuery和Mootools。。并且想要一个解决方案。

在文件中的这一行之前是否包含jQuery/mooTools?在我看来,在包含它所依赖的框架之前,您已经包含了一个插件或其他javascript。我假设您也在noConflict()模式下使用jQuery,因为您同时使用jQuery和mooTools。

似乎您并没有真正利用jQuery。我不会说mooTools,所以我可能不完全正确,但我会尝试以下方法:

jQuery(document).ready( function() {
    //you could convert this to jQuery too, of course
    mySlide = new Fx.Slide('advert');
    mySlide.hide(); 
} );

jQuery(this).wrap( '<div class="overflow-wrapper"></div>' )
            .parent('.overflow-wrapper').css('overflow', '' );
var cancel; 
//... bla bla
cancel = form.elements[i]; //cancel is now a <button>; no Id, unique on the page
cancel.addEvent('click', function(e) {...});
jQuery(文档).ready(函数(){
//当然,您也可以将其转换为jQuery
mySlide=新的外汇幻灯片(“广告”);
mySlide.hide();
} );
jQuery(this.wrap)(“”)
.parent('.overflow wrapper').css('overflow','');

如果尝试为样式属性指定无效值,IE通常会出现此错误。如果您正在使用IE8,并且在“工具”->“选项”->“高级”下启用了“启用javascript调试”,则可以尝试对其进行调试,并查看哪个属性分配引发了此错误,然后尝试更正此错误。

如果您登录此页面时拼命搜索IE中出现此错误的原因,请允许我指出发生这种情况的另一种方式。希望,无论是我发布这篇文章的行为能帮助我记住这一点,还是下一次我遇到这个错误时,这个问题会出现在谷歌上。这似乎至少每两年发生一次

如果您将变量(不确定它是否必须是全局变量,这次是我的)与元素的ID命名为同一个名称,则会出现这种情况。例如:

<div id="foo">
</div>
<script type="text/javascript">
    var foo = 1; < --Object doesn 't support this property or method!!
</script>

变量foo=1;<--对象不支持此属性或方法!!

+1了解有关变量名称的早期答案。这在IE8中是:

title = button.attr('title'); <-- Object doesnt support this method

$title = button.attr('title'); <-- OK!

title=button.attr('title') 如果变量列表中没有逗号,也可能发生这种情况,如下面的“f”变量:

var a = 'aaaa',
    f = 'ffff'
    b = someObject.attribute;

只是对谈话的简短补充

在某些情况下(想到video.js/bigvideo.js),您需要在jQuery或jQueryUI之前运行modernizr.js作为第一个脚本。立即清除所有内容。

(MooTools)

我的代码是这样的:

jQuery(document).ready( function() {
    //you could convert this to jQuery too, of course
    mySlide = new Fx.Slide('advert');
    mySlide.hide(); 
} );

jQuery(this).wrap( '<div class="overflow-wrapper"></div>' )
            .parent('.overflow-wrapper').css('overflow', '' );
var cancel; 
//... bla bla
cancel = form.elements[i]; //cancel is now a <button>; no Id, unique on the page
cancel.addEvent('click', function(e) {...});
var取消;
//... 布拉布拉
取消=表单元素[i]//取消现在是一个;没有Id,在页面上是唯一的
cancel.addEvent('click',函数(e){…});
我在
cancel.AddEvent()
上得到OP的异常。对我来说,解决这个问题的方法是将它重写为
$(cancel).addEvent()


多么糟糕的浏览器。

谢谢,我从来没想到会是这样。疯子似乎它必须是全球性的。对我来说,在一个函数中,使用var声明有效,而不使用var声明失败。如果像类一样调用一个n对象,似乎也会出现同样的问题。即,如果定义window.foo=new foo();您将出现错误“对象不支持此属性或方法”。难以置信。我已经尝试修复这个IE8错误一天多了,我可以告诉你有很多方法可以导致这个问题。不幸的是,我仍在尝试修复我的问题,所以很明显,我还没有找到所有可能的原因和解决方案(我因无法访问开发人员工具栏而受阻)