1

I'm new to JS, and I need some help.

I added a JSON template into my project. What I want is, separating the JSON input as a external file and load it into JS a variable.

This is what I have so far.

var menuItems = [
    {

        "name": "SIGHTS",
        "url": "#",
        "submenu": [
            {
                "name": "DIAMOND",
                "url": "#"
            },
            {
                "name": "THREE-POINT",
                "url": "#"
            },
            {
                "name": "TRIJICON SRO",
                "url": "#"
            }
        ]
    },
    {
        "name": "LIGHTS",
        "url": "#",
        "submenu": []
    },
    {
        "name": "LASERS",
        "url": "#",
        "submenu": []
    },
    {
        "name": "GRIPS",
        "url": "#",
        "submenu": []
    },
    {
        "name": "MAGAZINES",
        "url": "#",
        "submenu": [
            {
                "name": "7.5FK",
                "url": "#"
            },
            {
                "name": "9mm",
                "url": "#"
            },
        ]
    },
    {
        "name": "STOCKS",
        "url": "#",
        "submenu": [

        ]
    },
    {
        "name": "BRACES",
        "url": "#",
        "submenu": [
            {
                "name": "Folding Brace",
                "url": "#"
            },
        ]
    }   
]

var mainMenu = "<ul>";
for (var m = 0; m < menuItems.length; m++) {
    mainMenu += "<li>";
    mainMenu += "<a href='" + menuItems[m].url + "'>" + menuItems[m].name + "</a>";
    if (menuItems[m].submenu.length > 0) {
        mainMenu += "<ul>";
        for (var n = 0; n < menuItems[m].submenu.length; n++) {
            mainMenu += "<li>";
            mainMenu += "<a href='" + menuItems[m].submenu[n].url + "'>" + menuItems[m].submenu[n].name + "</a>";
            mainMenu += "</li>";
        }
        mainMenu += "</ul>";
    }
    mainMenu += "</li>";
}

document.getElementById("mainMenu").innerHTML = mainMenu;
@import url(https://fonts.googleapis.com/css?family=Open+Sans);



.clear {
  clear: both;
}

.menu {

  background: rgba(0, 0, 0, 0.5);
  font-family: "Open Sans", sans-serif;
  display: block;
  min-height: 48px;
  font-weight: bold;
  font-size: 0.76em;
  position: relative;
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

.menu ul {
  padding-left: 30%;

  display: block;
  margin: 0px;
  list-style: none;
}

.menu ul li {

  float:left;
  position: relative;
}

.menu ul li a {

  display: block;
  line-height: 48px;
  padding: 0px 20px;
  color: rgb(206, 206, 206);
  text-decoration: none;
}

.menu ul li:hover a {
  color: #3ed8b5;
}

.menu ul li ul {
  position: absolute;
  left: 0px;
  top: 48px;
  background: rgba(0, 0, 0, 0.5);
  visibility: hidden;
  opacity: 0;
  filter: alpha(opacity=0);
  -moz-transition: all 0.1s ease-in;
  -webkit-transition: all 0.1s ease-in;
  transition: all 0.1s ease-in;
}

.menu ul li:hover ul {
  visibility: visible;
  opacity: 1;
  filter: alpha(opacity=100);
}

.menu ul li ul li {
  float: none;
  border-top: solid 1px #bbb;
}

.menu ul li ul li:first-child {
  border-top: none;
}

.menu ul li ul li a {
  white-space: nowrap;
  line-height: normal;
  padding: 10px;
}

.menu ul li ul li a:hover {
  text-decoration: underline;
}
  <div id="v3d-container">
  <div class="menu">
    <div id="mainMenu"></div>
    <div class="clear"></div>
  </div>
evolutionxbox
  • 3,932
  • 6
  • 34
  • 51

0 Answers0