我试图编写一个脚本来制作夜间模式'在网站上。
每当我尝试运行脚本时,都会收到错误
"语法错误:预期令牌']'""在第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();
答案 0 :(得分:4)
数组是有序列表。对象是关键:值对。
您正试图将对象文字的主体放在数组文字中。
改为使用对象文字{}
。
答案 1 :(得分:2)
对象文字(键/值对)包含在{}
中,而不是[]
;后者仅用于数组(其键都是非负索引的对象)。所以它应该是:
this.pageElement[0] = {
element: document.body,
background: {
day: '#f1f1f1',
night: '#0e0e0e'
}
};