gpt4 book ai didi

javascript - 模块化JS : How to run a non-global function

转载 作者:行者123 更新时间:2023-11-28 17:40:00 25 4
gpt4 key购买 nike

这是我的代码(简单):

<script type="text/javascript">

// Set Schedule
(function() {
var schedule = {

report: [],
template: $('#report_schedule').html(),

init: function() {
this.cacheDom();
this.bindEvents();
console.log("banana");
},
cacheDom: function() {
this.$setScheduleBtn = $('#setScheduleBtn');
this.$reportSchedule = $('#reportSchedule');
},
bindEvents: function(){
console.log("potato");
this.$setScheduleBtn.on('click', showReportScheduler.bind(this));
},
showReportScheduler: function(){
this.$reportSchedule.toggle();
},



schedule.init();
};

})();
</script>

<span class="btn" id="setScheduleBtn">Set Schedule</span>
<div id="reportSchedule" name="reportSchedule" style="display: none;">

我正在运行此程序,但没有看到点击事件的结果。我尝试在 init 函数中使用 console.log("banana"); 只是为了确保此脚本正在运行。我的浏览器控制台中没有香蕉。我不明白什么?

p.s:这是我第一次自己尝试模块化js。

编辑:

谢谢泰特斯的帮助。这是我的最终代码:

    <span class="btn" id="setScheduleBtn">Set Schedule</span>
<div id="reportSchedule" name="reportSchedule" style="display: none;">
......
</div>

<script type="text/javascript">
/******************/
/** Set Schedule **/
/******************/
(function() {

var schedule = {

report: [],
template: $('#report_schedule').html(),

// Init functions
init: function() {
this.cacheDom();
this.bindEvents();
},
// Cache elements from DOM
cacheDom: function() {
this.$setScheduleBtn = $('#setScheduleBtn');
this.$reportSchedule = $('#reportSchedule');
},
// Set events
bindEvents: function() {
this.$setScheduleBtn.on( 'click', this.showReportScheduler.bind(this) );
},
// Display on click
showReportScheduler: function() {
this.$reportSchedule.show("slow");
}

};
schedule.init();

})();
</script>

最佳答案

schedule.init(); 语句位于对象文字内部。您需要将其移到对象文字之外,但将其保留在函数内:

(function() {
var schedule = { // object literal start
......
};// object literal end

schedule.init();

}/* function end */)();

关于javascript - 模块化JS : How to run a non-global function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48136654/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com