【发布时间】:2015-11-06 08:51:08
【问题描述】:
我是 JavaScript(和编程)的初学者。我在玩 JavaScript 对象,很快就卡住了。我有一个不错的导航栏(class= "favnav"),我希望它的按钮在鼠标悬停事件发生时更改其背景属性,另外,如果它的 href 属性具有相同的值,则希望在元素周围显示一些黑暗(即)窗口位置。为了解决这个问题,我尝试设计一个构造函数(可能是个坏主意),它具有以下属性:名称、类、目标和 id。我为 window.onload 分配了一个处理程序,所有的东西都在这个函数中完成了。首先,浏览器控制台给了我一个错误消息“Uncaught SyntaxError: Block-scoped declarations (let, const, function, class) not supported outside strict mode”。我通过在处理程序函数的顶部添加文字“use strict”来解决这个问题。现在我收到以下错误:“Uncaught SyntaxError: Unexpected token ”。现在我不知道它是什么以及如何解决它。整个脚本如下所示:
window.onload = function(){
"use strict";
function MenuItem(name, class, target, id)
{
this.object = document.getElementsByClassName(class).item(id);
this.name = name;
this.class = class;
this.target = target;
this.id = id;
this.is = false;
}
MenuItem.prototype.spec = function(){
if(window.location == this.object.getAttribute("href"))
{
this.object.style.backgroundColor = "rgb(0,156,128)";
this.is = true;
}
}
MenuItem.prototype.action = function()
{
if(!this.is)
{
this.object.onmouseover = function(obj){
obj.style.backgroundColor = "grey";
}
this.object.onmouseout = function(obj){
obj.style.backgroundColor = "transparent";
}
}
}
var Home = new MenuItem("Home", "favnav", "link to a page in my site", 0);
var Posts = new MenuItem("Posts", "favnav", "link to a page in my site", 1);
var Managers = new MenuItem("Managers", "favnav", "link to a page in my site", 2);
var Routines = new MenuItem("Routines", "favnav", "link to a page in my site",3);
var About = new MenuItem("About", "favnav", "link to a page in my site", 4)
var Careers = new MenuItem("Authors", "favnav", "link to a page in my site", 5);
var elems = document.getElementsByClassName("favnav");
for(var i = 0; i < elems.length; ++i)
{
elems.item(i).spec();
elems.item(i).action();
}
}
上面的代码可能有更多的错误。请帮我找到并修复它们。
【问题讨论】:
标签: javascript javascript-objects