Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.10.2018, 20:28
Новичок на форуме
Отправить личное сообщение для joker619 Посмотреть профиль Найти все сообщения от joker619
 
Регистрация: 18.10.2018
Сообщений: 2

Как добавить блок с данными в уже сгенерированную таблицу?
Суть вопроса такова, при загрузке страницы с помощью js рисуется таблица с данными, в каждой строке есть кнопка показать подробнее, как сделать так чтобы при нажатии на кнопку(more) под строкой рисовалось блок или строка с дополнительными данными которые относятся именно к этой строке. Я только начинаю свой путь, а тут нужно доделать то что делали другие, но мне не хватает знаний. Вот так строится таблица.
function showTable(data){

    var output = $('[name="output"]');  

    var str = '\
        <table class="table table-striped table-bordered table-condensed" id="result">'+
        '</table>';
    var table = $(str);


    var headers_order = [
        "cost_education",
        "hour_eduprogramm",
        "number",
        "more",
        "type_edu_programm_text",
        "name_eduprogramm",
        "count_files",
        "action"

    ];

    var headers_title = {
        "name_eduprogramm":"Наименование программы",
        "type_edu_programm_text":"Тип программы",
        "action": "Действия",
        "count_files": "Прикрепленные документы",
        "number":"№ п/п",
        "more": "Подробно",
        "cost_education":"Стоимость обучения",
        "hour_eduprogramm":"Кол-во часов"
    };
    var header_str = "<tr class='info'></tr>";
    var header = $(header_str);



    for(var j = 2; j<headers_order.length; j++){
        var name = headers_order[j];
        var title = headers_title[name];
        var th  ="<th align='center' style='vertical-align: middle'><strong>"+title+"</strong></th>"
        header.append(th);
    }
    table.append(header);


    for(var i =0; i<data.length; i++){
        var td_str="";
        var tr = $("<tr name='programm'></tr>");

        for(var j = 2; j<headers_order.length; j++){
            var name = headers_order[j];

            if(name == "action"){

                var title ='\
                    <button class="btn btn-default" action="edit" title="Редактировать" ><img src="/img/hamburg_edit.png" style="vertical-align: text-top"></button>\
                    <button class="btn btn-default" action="delete" title="Удалить"><img src="/img/cancel.png" style="vertical-align: text-top"></button>\
                    ';
            }
            else if (name == "more")
            {
                var title ='\
                    <button class="btn btn-default" action="more" ><img src="/img/cologne_plus.png" title="Развернуть" style="vertical-align: text-top"></button>\
                ';
            }



             else {

                var title = data[i][name];

                if(name == "address_list"){
                    var address_list="";
                    for(var k=0; k<title.length; k++){
                        var address = title[k]['full_name'];
                        address_list += "<div>"+address+"</div>";
                    }
                    title = address_list;
                }
            }


            td_str ="<td>"+title+"</td>";


            tr.append(td_str);

        }
        tr.data('values',data[i]);
        table.append(tr);


    }


    output.html(table);
}

Была идея записывать данные в скрытый блок, а по нажатию кнопки просто его показывать, возникает проблема что таблица рисуется при загрузке сразу, и данные туда уже никак не передать или я просто не знаю как это сделать.
Ответить с цитированием
  #2 (permalink)  
Старый 18.10.2018, 20:34
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

joker619,
данные которые хотите показать, это что и откуда?
Ответить с цитированием
  #3 (permalink)  
Старый 18.10.2018, 20:42
Новичок на форуме
Отправить личное сообщение для joker619 Посмотреть профиль Найти все сообщения от joker619
 
Регистрация: 18.10.2018
Сообщений: 2

Запрос из базы, к сожалению в данный момент их предоставить не могу, завтра утром добавлю пару строк из data.
Ответить с цитированием
  #4 (permalink)  
Старый 18.10.2018, 20:47
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,105

joker619,
tr.data('values',data[i]);
*!*
        tr.on("click", '[action="more"]', function(event) {
   var data = $(event.delegateTarget).data('values');
   $("скрытый_блок").html(data).show()
});
*/!*
        table.append(tr);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как записать JSON объект в mysql таблицу. user71 Node.JS 6 31.07.2016 13:01
Как можно развернуть/свернуть только один блок по клику? nina_ jQuery 2 19.07.2016 13:07
Прилипающий (скользящий) блок снизу экрана — как прописать условие? yafet Общие вопросы Javascript 11 25.06.2016 11:05
Обратный отсчет на js как добавить 0 при значении от 0 до 9 kovalenko3331 Общие вопросы Javascript 2 08.04.2016 08:59
как скрыть блок div по ключевому слову Sacred13 Элементы интерфейса 6 06.08.2013 19:13