如何在函数中调用javascript函数

如何在函数中调用javascript函数,javascript,Javascript,我有一个名为screener.js的javascript文件 function ScreenerPage() { function onScreenListChange() { do stuff }; } var ScreenerPage = function() { this.onScreenListChange = function() { //do stuff console.log("test")

我有一个名为screener.js的javascript文件

function ScreenerPage() {

    function onScreenListChange() {
       do stuff
    };
}
    var ScreenerPage = function() {
      this.onScreenListChange = function() {
        //do stuff
        console.log("test")
      }
    }
在index.html文件中,我包含如下javascript文件:

<script type="text/javascript" src="./js/screener.js"></script>
<script type="text/javascript"> 
    $(document).ready(function () { 
        screenerPage = new ScreenerPage();
    }
</script> 

然后,在index.html的head部分,我实例化了screenerPage对象,如下所示:

<script type="text/javascript" src="./js/screener.js"></script>
<script type="text/javascript"> 
    $(document).ready(function () { 
        screenerPage = new ScreenerPage();
    }
</script> 

$(文档).ready(函数(){
screenerPage=新的screenerPage();
}
然后在body部分中有一个select with onchange事件,该事件调用

<select id="screenList" onchange="screenerPage.onScreenListChange()">

但浏览器显示错误:

未捕获类型错误:screenerPage.onScreenListChange不是函数


我做错了什么?

javascript的工作方式是它有对象,它们的创建方式很重要! 这是我发现对这类事情有效的方法

screener.js

function ScreenerPage() {

    function onScreenListChange() {
       do stuff
    };
}
    var ScreenerPage = function() {
      this.onScreenListChange = function() {
        //do stuff
        console.log("test")
      }
    }
后来

    var a = new ScreenerPage();
    a.onScreenListChange();

如果您对它的工作原理有任何疑问,请随时给我发消息!

它不工作的原因是您遇到了范围问题

函数
ScreenerPage
在全局范围内定义,这意味着它可以在任何地方访问。现在在该函数中,您定义了一个名为
onScreenListChange
的本地函数

您可以这样做,但该函数只存在于您在其中定义它的函数的范围内

当我看到你的函数时,我认为你想要使用类。类是一个单一的名称,可以有多个变量/方法来完成特定的任务

class ScreenerPage {
  constructor(text){
    this.onScreenListChange(text) // Call this "method" on object creation.
  }

  onScreenListChange(text) {
    console.log(text ? text : 'do stuff');
  };
}

var a = new ScreenerPage('hi'); // now watch your console log.
a.onScreenListChange();

查看可能重复的不同问题谢谢Jacob,这很有效!我很难确定何时对函数使用这两种不同的格式。@user3217883没问题!如果您想了解有关该语法的更多信息,我建议您访问以下网站