为什么我会收到“SyntaxError:Expected token']'”?

时间:2014-04-29 21:24:16

标签: javascript

我试图编写一个脚本来制作夜间模式'在网站上。

每当我尝试运行脚本时,都会收到错误

  

"语法错误:预期令牌']'""在第9行。

该行说:

this.pageElements[0] = ['element': document.body, 'background': ['day': '#f1f1f1', 'night': '#0e0e0e']];

为什么不起作用?

这是完整的代码:

window.nightMode = {};

//Functions
nightMode.init = function () {
    this.pageElements = [];

    //Format: ['element': Element, 'background': ['day': Day background color, 'night': Night background color], 'text': ['day': Day text color, 'night': Night text color]];
    this.pageElements[0] = {
        'element': document.body,
        'background': {
            'day': '#f1f1f1',
            'night': '#0e0e0e'
        }
    };
    this.pageElements[1] = {
        'element': document.getElementById('yt-masthead-container'),
        'background': {
            'day': '#fff',
            'night': '#000'
        }
    };
    this.pageElements[2] = {
        'element': document.getElementById('search-btn'),
        'background': {
            'day': '#fff',
            'night': '#000'
        }
    };
    this.pageElements[3] = {
        'element': document.getElementById('masthead-search-terms'),
        'background': {
            'day': '#fff',
            'night': '#000'
        },
        'text': {
            'day': '#666',
            'night': '#999'
        }
    };


    this.isNight = false;
}

nightMode.setNight = function () {
    for (var i = 0; i < this.pageElements.length; i++) {
        this.pageElements[i].element.style.background = this.pageElements[i].background.night
        if (this.pageElements[i].text) {
            this.pageElements[i].element.style.color = this.pageElements[i].text.night
        }
    }
    alert('Night mode');

    this.isNight = true;
}

nightMode.setDay = function () {
    for (var i = 0; i < this.pageElements.length; i++) {
        this.pageElements[i].element.style.background = this.pageElements[i].background.day
        if (this.pageElements[i].text) {
            this.pageElements[i].element.style.color = this.pageElements[i].text.day
        }
    }
    alert('Day mode');

    this.isNight = false;
}

nightMode.toggle = function () {
    if (this.isNight) {
        this.setDay();
    } else {
        this.setNight();
    }
}


//Startup Code
nightMode.init();

nightMode.toggle();

2 个答案:

答案 0 :(得分:4)

数组是有序列表。对象是关键:值对。

您正试图将对象文字的主体放在数组文字中。

改为使用对象文字{}

答案 1 :(得分:2)

对象文字(键/值对)包含在{}中,而不是[];后者仅用于数组(其键都是非负索引的对象)。所以它应该是:

this.pageElement[0] = {
    element: document.body,
    background: {
        day: '#f1f1f1',
        night: '#0e0e0e'
    }
};