JavaScript:尝试使用一个类';由于某种原因而无法使用的函数';跑不动 类菜单{ 构造函数(id,listButtons,title=null,visible=false){ this.id=id; this.listBtn=listButtons; this.title=标题; 可见的;可见的; this.SetVisible(this.visible); } 设置可见(可见性){ 警报(“SetVisible:+visibility+”“+this.id) 如果(能见度){ 对于(var i=0;i

JavaScript:尝试使用一个类';由于某种原因而无法使用的函数';跑不动 类菜单{ 构造函数(id,listButtons,title=null,visible=false){ this.id=id; this.listBtn=listButtons; this.title=标题; 可见的;可见的; this.SetVisible(this.visible); } 设置可见(可见性){ 警报(“SetVisible:+visibility+”“+this.id) 如果(能见度){ 对于(var i=0;i,javascript,arrays,function,class,ecmascript-6,Javascript,Arrays,Function,Class,Ecmascript 6,这是我的类和函数 函数

这是我的类和函数

函数
运行,我可以从警报中看到,但由于某种原因,我在类
菜单中的函数
没有显示警报,我不知道原因是什么


如果我将
SetVisible
的输入改为“true”而不是变量,它仍然不起作用,因此变量不存在问题您需要首先创建类的实例:

class Menu {
  constructor(id, listButtons, title = null, visible = false) {
    this.id = id;
    this.listBtn = listButtons;
    this.title = title;
    this.visible = visible;
    this.SetVisible(this.visible);
  }

  SetVisible(visibility) {
    alert("SetVisible:" + visibility + " " + this.id)
    if (visibility) {
      for (var i = 0; i < this.listBtn.length; i++) {
        this.listBtn[i].style.display = "block";
      }
      this.title.style.display = "block";
      visible = visibility;
    } else {
      for (var i = 0; i < this.listBtn.length; i++) {
        this.listBtn[i].style.display = "none";
      }
      this.title = "none";
      visible = visibility;
    }
  }
}



function ToggleMainAbout() {
  alert("Toggle_Main_About");
  mainMenu.SetVisible(!mainMenu.visible);
  aboutMenu.SetVisible(!aboutMenu.visible);
}

您是否创建了菜单类对象,以便使用new关键字访问菜单方法。就像这个const main Menu=new Menu()。

代码底部的
main Menu
aboutMenu
实例来自哪里?
let mainMenu = new Menu("Main", ["List button 1", "List button 2"]);
let aboutMenu = new Menu("About", ["Home", "Back"]);