2016-11-29 2 views
0

Я не получаю никаких параметров (элементов списка) или получения и удаления в моем третьем навигационном баре, созданном с использованием моей собственной функции. Довольно забавно, что он работает в краю, если я включаю предупреждение в функцию navBar, и он создаст navBar со всеми параметрами и т. Д., Если я собираюсь просто создать переменную массива и вручную вставить значения в этот массив без заполнения этого массива через мою написанную функцию , Пожалуйста, ознакомьтесь с приведенным ниже кодом.Нет элементов списка в последней созданной кнопке навигатора. Использование моей собственной функции

var tims = []; 
//populates the array with teams 
function getTeams(tims) { 
    $.getJSON("teams.json").done(function(data) { 
     var tim1 = data.sports_content.teams; 
     for (var i in tim1.team) { 
      if (tim1.team[i].is_nba_team == true) { 
       tims.push(tim1.team[i].city + ' ' + tim1.team[i].team_nickname); 
      } 
     } 
    }) 
    return tims; 
} 

//function used to create a navbar 
function navBar(id, header, options, cssParams, cssRed) { 
    var content = "<ul class= 'dropdown-menu "; 
    var css = ""; 
    var css1 = ""; 
    //setting up css for a navbar 
    for (var j in cssParams) { 
     css += cssParams[j] + " "; 
    } 
    content += css + "' >"; 

    //creating list of css elements for navbar placement 
    for (var z = 0; z < cssParams.length - cssRed; z++) { 
     css1 += cssParams[z] + " "; 

    } 
    //alert(css1); 
    //creating list elements for a navbar 
    for (var i in options) { 

     content += "<li><a id ='" + id + i + "' href='#'>" + options[i] + "</a></li>"; 
    } 
    content += "</ul>"; 
    $('#nBar').append("<div class='btn-group '> <button id = '" + id + "' type='button' class='" + css1 + " btn btn-primary btn-lg dropdown-toggle ' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>" + header + "<span class='caret'></span></button>" + content + "</div>"); 
    //alert(content); 
} 

//creating three navbars , the third one appears to be empty 
    var tims = new Array(); 
    tims = getTeams(tims); 
navBar("func", "func", ["news", "roster", "stadium", "switch the team"], ["navMv", "options1", "col1"], 2); 
navBar("nba", "Nba", ["top 10 last night", "commisioner", "info"], ["navMv", "next", "options1", "col1"], 2); 
navBar("team", "team", tims, ["navMv", "next1", "options1", "col1"], 2); 

Если я предупрежу tims[any_element] Я получить право всплывало. Думал, что стоит упомянуть. Например, это собирается дать мне имя первой команды, если я собираюсь нажать на первый элемент списка из более Func NavBar, но список NavBar команды будет пустым:

 $('#main').ready(function(){ 
       var tims = new Array(); 
       tims = getTeams(tims); 
       navBar("func","func",["news","roster","stadium","switch the team"],["navMv","options1","col1"],2); 
       navBar("nba","Nba",["top 10 last night","commisioner","info"],["navMv","next","options1","col1"],2); 
       navBar("team","team",tims,["navMv","next1","options1","col1"],2); 

       $("#func0").click(function(event){ 
        alert(tims[0]); 
        event.preventDefault; 
       }) 

      }); 

ответ

0

Где вы положили, что предупреждение для тем? Я бы сказал, что ваши тимы по-прежнему являются пустым массивом. В вашей функции getTeams вы возвращаете измененную переменную, но это не назначено. Вам необходимо написать

tims = getTeams(tims); 
+0

Я обновил свой код, используя то, что вы предложили, и спасибо за это. Хотя по какой-то причине у меня по-прежнему возникает одна и та же проблема. Если я заключу создание этого единственного элемента navBar, давайте скажем функцию события щелчка на любом объекте на моем веб-сайте, я собираюсь получить этот navBar, созданный со всеми именами команд, но по какой-то причине не могу получить доступ по идентификатору. Единственный способ, которым это работает, это когда я добавляю alert (content) (который, кажется, запускается дважды каждый раз, когда страница загружается) в конце функции navBar, и я могу получить доступ ко всем itesm по их идентификаторам. Любая идея почему? – kamilucha123