JavaScript Dynamic DropDowns

by Rishabh Sharma

HTML

<div id="container">

</div>

JavaScript

var data = {
  Country: {
    parent: null,
    availableOptions: [{
      value: "United States",
      parentValue: null,
      id: 1
    }, {
      value: "China",
      parentValue: null,
      id: 2
    }, {
      value: "India",
      parentValue: null,
      id: 3
    }],
    selectedOption: {
      value: "India",
      parentValue: null,
      id: 3
    }
  },
  State: {
    parent: "Country",
    availableOptions: [{
      value: "California",
      parentValue: "United States",
      id: 1
    }, {
      value: "Shanghai",
      parentValue: "China",
      id: 2
    }, {
      value: "Delhi",
      parentValue: "India",
      id: 3
    }, {
      value: "New York",
      parentValue: "United States",
      id: 4
    }, {
      value: "Rajasthan",
      parentValue: "India",
      id: 5
    }, {
      value: "Guangdong",
      parentValue: "China",
      id: 6
    }],
    selectedOption: {
      value: "Rajasthan",
      parentValue: "India",
      id: 5
    }
  },
  City: {
    parent: "State",
    availableOptions: [{
      value: "Greenfield",
      parentValue: "California",
      id: 1
    }, {
      value: "Shanghai",
      parentValue: "Shanghai",
      id: 2
    }, {
      value: "New Delhi",
      parentValue: "Delhi",
      id: 3
    }, {
      value: "Nevada City",
      parentValue: "California",
      id: 4
    }, {
      value: "Geneva",
      parentValue: "New York",
      id: 5
    }, {
      value: "Jaipur",
      parentValue: "Rajasthan",
      id: 6
    }, {
      value: "Udaipur",
      parentValue: "Rajasthan",
      id: 7
    }, {
      value: "Shenzhen",
      parentValue: "Guangdong",
      id: 8
    }, {
      value: "Shantou",
      parentValue: "Guangdong",
      id: 9
    }],
    selectedOption: {
      value: "Jaipur",
      parentValue: "Rajasthan",
      id: 6
    }
  }
};


var dropdown = (function() {
  var container = null,
    data = {},
    object = {},
    label,
    select,
    option;

  function...