当我的页面加载时,会发生此问题。

使用以下脚本
-jquery.simplemodal-1.4.3.js
-jquery v1.7.1

下面是一个简单的代码快照,其中发生了此错误的simplemodal内部代码。

 focus: function (pos) {
 var s = this, p = pos && $.inArray(pos, ['first', 'last']) !== -1 ? pos : 'first';
     // focus on dialog or the first visible/enabled input element
       var input = $(':input:enabled:visible:' + p, s.d.wrap);
       setTimeout(function () {
    input.length > 0 ? input.focus() : s.d.wrap.focus();
    }, 10);
  },

我可以解决这个问题的任何想法都很棒

最佳答案

这是一个古老的问题,原始海报可能已经解决了他的具体问题。
但是与错误消息有关的一般问题:

  • 未捕获的TypeError:无法读取未定义
  • 的属性'...'
  • 未捕获的TypeError:无法读取空的属性'...'
  • 未捕获的TypeError:无法设置未定义
  • 的属性'...'
  • 未捕获的TypeError:无法设置空
  • 的属性'...'

    对于许多人来说仍然很重要,并且有一个简单而笼统的答案:



    Google Chrome浏览器中的简单测试代码
    <script type="text/javascript">
    // object obj is not declared, there is no previos 'var obj;'
    obj.prop;              // Uncaught TypeError: Cannot read property 'prop' of undefined
    obj.prop = "value1";   // Uncaught TypeError: Cannot set property 'prop' of undefined
    obj.func();            // Uncaught TypeError: Cannot read property 'func' of undefined
    // ------------------------------------------------------------------------
    // object 'obj' is declared with:
    var obj;
    // but it is not defined, there is no value assigned to it (obj = 5 or something else)
    obj.prop;              // Uncaught TypeError: Cannot read property 'prop' of undefined
    obj.prop = "value1";   // Uncaught TypeError: Cannot set property 'prop' of undefined
    obj.func();            // Uncaught TypeError: Cannot read property 'func' of undefined
    // ------------------------------------------------------------------------
    // object 'obj' is declared and defined. Value is null
    var obj = null;
    obj.prop;              // Uncaught TypeError: Cannot read property 'prop' of null
    obj.prop = "value1";   // Uncaught TypeError: Cannot set property 'prop' of null
    obj.func();            // Uncaught TypeError: Cannot read property 'func' of null
    // ------------------------------------------------------------------------
    // object 'obj' is declared and defined
    var obj = {prop: "propertyValue", func: function() {return "returnValue"}}
    // there are no errors
    </script>
    

    Firefox中的相同代码:
    // object obj is not declared, there is no previos 'var obj;'
    obj.prop;              // Uncaught TypeError: obj is undefined
    obj.prop = "value1";   // Uncaught TypeError: obj is undefined
    obj.func();            // Uncaught TypeError: obj is undefined
    -----------------------------------
    // object 'obj' is declared with:
    var obj;
    // but it is not defined, there is no value assigned to it (obj = 5 or something else)
    obj.prop;              // Uncaught TypeError: obj is undefined
    obj.prop = "value1";   // Uncaught TypeError: obj is undefined
    obj.func();            // Uncaught TypeError: obj is undefined
    -----------------------------------
    // object 'obj' is declared and defined. Value is null
    var obj = null;
    obj.prop;              // Uncaught TypeError: obj is null
    obj.prop = "value1";   // Uncaught TypeError: obj is null
    obj.func();            // Uncaught TypeError: obj is null
    -----------------------------------
    // object 'obj' is declared and defined
    var obj = {prop: "propertyValue", func: function() {return "returnValue"}}
    // there are no errors
    

    因此,浏览器之间的错误消息有所不同,但是消息很清楚:



    在一般情况下,很容易理解错误消息的确切含义。

    但是,为什么在具体情况下会发生这种情况?

    原因可能很多,但重要的原因可能是:
  • 调用函数或访问属性
  • 在初始化/定义之前
    如果动态创建的对象(弹出窗口,模式窗口)尚未准备好,则可能会发生这些情况。
  • 被销毁后
  • 通过使用API​​的新版本来更改结构,其中的属性或函数是
  • 重命名或
  • 移至其他对象
  • 通过在数组上使用循环:索引不存在,因为
  • 递增/递减错误或
  • 状况不佳

  • 如何调试?
  • 查找在哪个对象上以及在何处引发错误
  • 阅读文档以确保,
  • 尝试在正确的位置使用对象
  • 在使用对象
  • 之前已经调用了所有需要的功能
  • 如果已定义对象,则在范围/函数中查找
  • 如果不是,请在其调用者的堆栈跟踪中查找...
  • 关于javascript - 未捕获的TypeError : Cannot read property 'focus' of undefined,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23251036/

    10-11 05:43