Javascript:如果位于另一个文件中,则无法创建新对象

乔治·桑布罗塔(Giorgia Sambrotta)

我正在用OOP构建一个小的日历,这是可行的,但是每当我在另一个js文件中调用新的Calendar()时,它都会抱怨它没有定义Calendar,我不明白为什么会这样。

某些代码:Index.html

<html>
    <head>
        <script src="monthData.js"></script>
        <script src="month.js"></script>

    </head>

    <body>
        <table>
            <tbody id="table">
                <tr id="year"></tr>
                <tr>
                    <td id="prev-month"> Prev</td>
                    <td id="month"></td>
                    <td id="next-month"> Next</td>
                </tr>
                <tr id="days-of-week"></tr>
            </tbody>
        </table>


        <script src="currentCal.js"></script>
    </body>
</html>

month.js

window.wca = {}
};

(function() {

wca.today = new Date();
wca.currentYear = wca.today.getFullYear();
wca.currentMonth = wca.today.getMonth();

function Calendar(year, month){
    this.year = wca.currentYear;
    this.month = wca.currentMonth;
}

wca.Calendar.prototype.createCalendar = function(){
    wca.currentDayOfWeek = wca.today.getDay();
    wca.firstDay = new Date(wca.currentYear, wca.currentMonth, 1); //first day of current month
    wca.firstDayOfWeek = daysLabel[wca.firstDay.getDay() - 1]; // first dayOfTheWeek of current month
    wca.firstDayOfWeekNumber = wca.firstDay.getDay(); 
    wca.showMonth = monthNamesArray[wca.currentMonth]; //current month string
    wca.showWeekDay = daysLabel[wca.currentDayOfWeek - 1]; //current day of the week
    wca.totDayInMonth = daysPerMonth[wca.currentMonth]; //how many days are in the current month

    //Leap years
    if (wca.currentMonth == 1) {
        if((wca.currentYear % 4 == 0 && wca.currentYear % 100 != 0) || wca.currentYear % 400 == 0){
          wca.totDayInMonth = 29;
        }
    }

    var Htmltable = document.getElementById('table');
    var year = document.getElementById('year');
    var month = document.getElementById('month');
    var daysOfWeek = document.getElementById('days-of-week'); 

    year.innerHTML = '<td>'+ wca.currentYear +'</td>';
    month.innerHTML =  '<td>'+ wca.showMonth +'</td>';
    for(i = 0; i < daysLabel.length; i++)
        daysOfWeek.innerHTML = daysOfWeek.innerHTML + '<td>'+ daysLabel[i] +'</td>';

    var html = '';
    var day = 1;
    for(i = 1; i <= 6; i++){ //6 rows
        html += '<tr id="days-row">';
        for(j = 1; j <= 7; j++){ //7 coloumns
            html += '<td>'; 
            if(day <= wca.totDayInMonth && (i > 1 || j >= wca.firstDayOfWeekNumber )){
                html += day;
                day++;
            } else {
                html += '&nbsp;';
            }
            html += '</td>';
        }
        if(day >= wca.totDayInMonth){
            break;
        }
        html += '</tr>'; 
    }  
    Htmltable.innerHTML += html + '</tr>';
}

})();

currentCal.js

window.wca = {};
(function() {
    var currentCal = new Calendar(wca.currentYear, wca.currentMonth);
    currentCal.createCalendar();
})();

因此,如果我在month.js中放入currentCal中的内容,则一切正常,否则会得到未定义的错误。这是为什么?因为在我的HTML中,我先链接month.js,然后再链接currentCal.js,所以我认为它应该已经知道Calendar()了。是。

周四

它看起来像一个范围问题。您可以尝试输入“ var wca = {};”吗?在month.js中,并在currentCal.js中使用它(不使用window.wca = {};)?

编辑:他在另一个文件的闭包内调用了“新日历”,因此它不在另一个文件的全局范围内。他必须删除闭包“(function(){...})”才能在全局范围内声明此变量,并且可以从其他文件访问。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果包含在另一个对象中,则无法使用mysqli :: __ construct?

来自分类Dev

如果_sre.SRE_Pattern对象与另一个对象并置,则无法调用

来自分类Dev

从JavaScript中的另一个对象创建对象

来自分类Dev

AngularJS / JavaScript从另一个对象创建一个新对象

来自分类Dev

JavaScript从另一个文件中创建自定义对象以进行测试

来自分类Dev

如果目标对象位于Coredata中的另一个Source中,请不要删除它

来自分类Dev

如何访问对象数组内的对象,而对象数组位于javascript中的另一个数组内?

来自分类Dev

从另一个实例创建新对象

来自分类Dev

用另一个类创建新对象

来自分类Dev

在另一个对象的构造函数中创建新的 ES6 对象失败

来自分类Dev

创建另一个文件的新实例

来自分类Dev

创建另一个文件的新实例

来自分类Dev

在另一个对象中创建的模拟对象

来自分类Dev

代码在一个.py中创建新的.txt文件,但不在另一个.py中创建

来自分类Dev

如何从列表中的另一个文件创建新的txt文件?

来自分类Dev

Centos将文件复制到另一个文件(如果存在)中,创建一个版本

来自分类Dev

如果另一个文件的Python列表中的字符串删除对象

来自分类Dev

无法从另一个JavaScript文件访问JavaScript对象

来自分类Dev

在另一个对象中创建复杂/嵌套JavaScript对象的正确方法

来自分类Dev

如何基于数组和另一个对象创建一个新对象?

来自分类Dev

如何使用 Python 从另一个对象创建一个新的 JSON 对象?

来自分类Dev

如何在Android中的另一个布局xml文件中创建Button对象

来自分类Dev

当用户在 Java Swing 中单击按钮时从另一个类创建一个新对象

来自分类Dev

制作另一个文件中的类的实例,而无需创建新变量

来自分类Dev

为什么在Java的另一个方法中无法创建引用的对象?

来自分类Dev

访问在另一个类中创建的对象

来自分类Dev

打开位于另一个文件Powershell中的文件(从文件路径)

来自分类Dev

在另一个.cpp文件中使用main.cpp中创建的类型的对象

来自分类Dev

如果原始移动速度过快,则无法使用另一个滚动平移停止UITableView的滚动移动

Related 相关文章

  1. 1

    如果包含在另一个对象中,则无法使用mysqli :: __ construct?

  2. 2

    如果_sre.SRE_Pattern对象与另一个对象并置,则无法调用

  3. 3

    从JavaScript中的另一个对象创建对象

  4. 4

    AngularJS / JavaScript从另一个对象创建一个新对象

  5. 5

    JavaScript从另一个文件中创建自定义对象以进行测试

  6. 6

    如果目标对象位于Coredata中的另一个Source中,请不要删除它

  7. 7

    如何访问对象数组内的对象,而对象数组位于javascript中的另一个数组内?

  8. 8

    从另一个实例创建新对象

  9. 9

    用另一个类创建新对象

  10. 10

    在另一个对象的构造函数中创建新的 ES6 对象失败

  11. 11

    创建另一个文件的新实例

  12. 12

    创建另一个文件的新实例

  13. 13

    在另一个对象中创建的模拟对象

  14. 14

    代码在一个.py中创建新的.txt文件,但不在另一个.py中创建

  15. 15

    如何从列表中的另一个文件创建新的txt文件?

  16. 16

    Centos将文件复制到另一个文件(如果存在)中,创建一个版本

  17. 17

    如果另一个文件的Python列表中的字符串删除对象

  18. 18

    无法从另一个JavaScript文件访问JavaScript对象

  19. 19

    在另一个对象中创建复杂/嵌套JavaScript对象的正确方法

  20. 20

    如何基于数组和另一个对象创建一个新对象?

  21. 21

    如何使用 Python 从另一个对象创建一个新的 JSON 对象?

  22. 22

    如何在Android中的另一个布局xml文件中创建Button对象

  23. 23

    当用户在 Java Swing 中单击按钮时从另一个类创建一个新对象

  24. 24

    制作另一个文件中的类的实例,而无需创建新变量

  25. 25

    为什么在Java的另一个方法中无法创建引用的对象?

  26. 26

    访问在另一个类中创建的对象

  27. 27

    打开位于另一个文件Powershell中的文件(从文件路径)

  28. 28

    在另一个.cpp文件中使用main.cpp中创建的类型的对象

  29. 29

    如果原始移动速度过快,则无法使用另一个滚动平移停止UITableView的滚动移动

热门标签

归档