我有一个名为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不是函数
我在做什么错了?
答案 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();