Javascript undefined不是一个函数

时间:2014-07-31 08:13:15

标签: javascript

任何时候我试图引用我的全局变量我得到Uncaught TypeError: undefined is not a function错误并且没有任何反应。因为我是javascript新手,所以我可能会遗漏一些明显的东西。 我已经简化了下面的代码,以便您可以看一看。非常感谢所有帮助。

var popup;

function first(){
    popup = window.open(...); //opens a popup
    popup.moveTo(10,10) //moves the window
    second();
}

function second(){
    .
    .
    .
    //does an XMLHttpRequest and when it's done (simplified) it tries to close the window
    xmlHttp.onreadystatechange = function(){
        popup.close();
    }
}

每当弹出popup.close()时,我都会收到上面的错误。我错过了一些非常明显的东西吗?

对于未来的问题,这是一个解决方案:

而不是popup.close();

var win = window.open("","popup");//open a new window with the same name as before
win.close();

通过这样做,它将引用相同的窗口对象,并且能够关闭它。

2 个答案:

答案 0 :(得分:2)

根据您的错误,有两种可能性

  1. pop无法访问
  2. {li} closepop object 中不存在

    我在控制台试了两次

    当对象pop不存在时

      pop.close()
    

    你会得到错误

      ReferenceError: pop is not defined
    

    当对象中没有函数close

     var pop = {}
     pop.close()
    

    你会得到错误

     TypeError: undefined is not a function
    

    根据您的错误,pop对象中没有函数名close

答案 1 :(得分:0)

试试这个..

var popup;

function first(){
    popup = window.open(...); //opens a popup
    popup.moveTo(10,10) //moves the window
    second(popup);
}

function second(popup_){
    .
    .
    .
    //does an XMLHttpRequest and when it's done (simplified) it tries to close the window
    xmlHttp.onreadystatechange = function(){
        popup_.close();
    }
}