【问题标题】:What's wrong with my JavaScript Object Constructor我的 JavaScript 对象构造函数出了什么问题
【发布时间】: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


    【解决方案1】:

    火狐说:SyntaxError: class is a reserved identifier

    尝试将参数重命名为clazz

    【讨论】:

    • 好吧...让我试试。如果您在代码中看到任何其他类型的错误,请告诉我。谢谢:)
    • 成功了,我还修复了一些错误(比如 obj.style... 应该是 obj.target.style... )。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    相关资源
    最近更新 更多