【问题标题】:Internet Explorer Object expected errorInternet Explorer 对象预期错误
【发布时间】:2013-07-01 09:04:20
【问题描述】:

Internet Explorer 对象预期错误 LINE:64

该代码适用于 Firefox 和 Chrome。

我不断收到 Internet Explorer 对象预期错误。我删除了受影响的代码,它继续运行 直到第 64 行之后的所有代码都消失了。

问题从第 64 行开始,代码如下:

受影响的代码:

$(document).ready(function () {
    preload(preloadi);
});

所有 JQUERY 代码:

        <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.min.js"></script>           
        <script type="text/javascript"> 

/* -------------------------------- Preload images function for speed*/

    function preload(arrayOfImages) {
        $('body').addClass("loading");
        $(arrayOfImages).each(function () {
            $('<img/>')[0].src = this;
        });
        $('body').removeClass("loading");
    }

/* -------------------------------- Generic functionality function */

    function transformImage(classCSS, original, link, backArray, count, prevClass) {
        var back = '<div id="back"><div id="_' + backArray[backArray.length-1] + '"></div></div><div class="_0"></div><div class="_1"></div><div class="_4"></div><a id="contact" href="mailto:pbn@casa.gov.au"></a><a id="rightlink" target="_blank" href="http://www.casa.gov.au/scripts/nc.dll?WCMS:STANDARD::pc=PC_101078"></a>';

        link[prevClass] = window.original;
        window.original = link[classCSS];

        if (classCSS != '0') { link[classCSS] += back; }

        $('.inter').fadeTo(250, 0.25, function () {

            $('.inter').html(link[classCSS]);


            $('.inter').css({
                'background-image': 'url("' + classCSS + '.png")'
            });
            $('.inter').fadeTo(250, 1.00);
        });
    }

/* -------------------------------- Variables */
    var preloadi = [
        '1.png',
        '2.png'
        ];  
    var backArray = [];
    var prevClass = '0';
    var classCSS = '0';
    var count = 0;
    original = '<div class="_2"></div><div class="_3"></div>';
    var link = [
    '<div class="_2"></div><div class="_3"></div>',
    'a',
    'b',
    'c',
    'd'
    ];

/* -------------------------------- Event handlers */

    $(document).ready(function () {
        preload(preloadi);
    });

    $(document).on('mouseenter mouseleave', '.inter [class]', function (event) {
        $('.' + this.classCSS + 't').toggle(event.type === 'mouseenter');
    });

    $(document).on('change', '#selectContainer [id]', function () {
    backArray[count] = classCSS;
    count += 1;
    prevClass = classCSS;

    classCSS = $("select").val();
    transformImage(classCSS, original, link, backArray, count, prevClass); 
    })

    $(document).on('click', '.inter [class], .inter #back [id]', function () {

    if (this.id) { 
    count -= 1; 
    backArray.pop(count);  
    } else { 
    backArray.push(classCSS);
    count += 1;
    }

    prevClass = classCSS;
    classCSS = (this.id || this.className).substr(1);
    transformImage(classCSS, original, link, backArray, count, prevClass); 
    })  

    </script> 

【问题讨论】:

  • 您的某些选择器不寻常。 '#selectContainer [id]' 是什么? [id] 部分选择具有id 属性的元素。您的想法是选择具有id 属性的#selectContainer 的所有子元素吗? '.inter [class], .inter #back [id]' 的类似问题:我们是否选择了 .inter 的所有具有 class 属性的孩子,以及 .inter #back 的所有具有 id 属性的孩子?这到底是怎么回事?

标签: javascript jquery css


【解决方案1】:

您的文档就绪处理程序太短。

$(document).ready(function () {
   preload(preloadi);
});  // Document ready ends here.

因此,它下面的所有内容都在 DOM 准备好之前执行。

将关闭 }); 移到所有事件处理程序代码下方,它应该可以工作,但可能存在任何其他编码错误。

你最终应该得到的是:

$(document).ready(function () {
  preload(preloadi);

  $(document).on('mouseenter mouseleave', '.inter [class]', function (event) {
    $('.' + this.classCSS + 't').toggle(event.type === 'mouseenter');
 });

 // more initialisation code...

});  // end of $(document).ready()

// No more code here.

【讨论】:

  • 我将 ready 函数移到了事件处理程序代码的下方。 IE 错误只是转到下一行。即:" $(document).on('mouseenter mouseleave', '.inter [class]', function (event) { $('.' + this.classCSS + 't').toggle(event.type = == 'mouseenter'); });"
  • 您是移动了整个函数,还是只移动了右括号?您需要将事件处理程序包含在 ready 函数中。如果你不这样做,IE 将尝试过早执行它们。
  • 我做了,错误仍然存​​在,还有一些对象预期的错误。不是 $(document).on 等到 dom 准备好了吗?或者这在 IE 中不起作用?
  • 不 - 它不会等待。这就是为什么你将所有代码包含在 $(document).ready(function() { // 你所有的初始化代码 });
  • 如上所述包装代码。现在存在 3 个对象预期错误。 1 在脚本的第一行(空白行),另外两个在 .ready 函数的开头。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-27
  • 1970-01-01
  • 2021-05-06
  • 1970-01-01
  • 1970-01-01
  • 2012-05-30
相关资源
最近更新 更多