如何在函数内调用javascript函数

时间:2018-11-24 21:10:01

标签: javascript

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

function ScreenerPage() {

    function onScreenListChange() {
       do stuff
    };
}

从index.html文件中,我包括这样的javascript文件:

<script type="text/javascript" src="./js/screener.js"></script>

然后稍后在index.html的开头部分中实例化screenerPage对象,如下所示:

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

然后在正文部分中,有一个带有onchange事件的select调用

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

但浏览器显示错误:

  

未捕获的TypeError:screenerPage.onScreenListChange不是函数

我在做什么错了?

2 个答案:

答案 0 :(得分:1)

javascript的工作方式是它具有对象以及它们的创建方式很重要! 这是我发现可用于此类事情的方式

screener.js

conf = new ConsumerConfig
{
            GroupId = $"{_topic}{CacheMessageConsumerSuffix}",
            BootstrapServers = Servers,
            AutoOffsetReset = AutoOffsetResetType.Earliest,
};


using (var c = new Consumer<string, string>(conf))
{
    c.Subscribe(_topic);

    bool consuming = true;
    c.OnError += (_, e) => consuming = !e.IsFatal;

    while (consuming)
    {
        var cr = c.Consume();
    }
}

以后

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

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

答案 1 :(得分:0)

它不起作用的原因是您遇到范围问题。

函数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();