Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание/удаление строк 
:(
    Опции темы
DarkNet23
  Дата 24.5.2017, 03:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 24.5.2017

Репутация: нет
Всего: нет



Здравствуйте, подскажите пожалуйста что нужно дописать чтобы выполнить условие

Реализовать возможность динамического создания/удаления строк таблицы. Путем добавления кнопок "Добавить"/"Удалить" в четвертую колонку таблицы. Последнюю строку удалить нельзя.

Код

<!DOCTYPE html>
<html>
    <head>
        <title>Динамическая таблица</title>
        <script type="text/javascript" src="tab.js"></script>
        <style>
            table, td {
                border: 1px solid #aaa;
                border-collapse: collapse;
                padding: 5px;
                margin: 10px;
            }
            table thead {
                font-weight: bold;
                text-align: center;
            }
        </style>
    </head>
    <body>
        <div id="table-wrapper"></div>
        <script>
            window.onload = function() {
                var wrapper = document.getElementById('table-wrapper');

                var table = {
                    header : ['Идентификатор', 'Название', 'Описание'],
                    data : [
                        ['1', 'Элемент 1', 'Первый элемент в списке'],
                        ['2', 'Элемент 2', 'Второй элемент в списке'],
                        ['3', 'Элемент 3', 'Третий элемент в списке']
                    ],
                    extra : {
                        filter : false,    //Добавляет фильтрацию по колонке "Название"
                        dynamic : false,    //Добавляет кнопку "Удалить"/"Добавить" в последнюю колонку для каждой строки
                        sortable : false    //Добавлять сортировку для колонки "Индетификатор"
                    },
                    properties : {
                        id : 'table-demo',
                        className : 'table table-default'
                    }
                };

                var tableGenerator = new TableGenerator(table, wrapper);
                tableGenerator.render();

                var wrapper = document.getElementById('table-wrapper');
                var tableGenerator = new TableGenerator(table, wrapper);
                tableGenerator.render();
            };
        </script>
    </body>
</html>

Код

/**
 *
 * @param tableJson Table
 * @param wrapper HTMLElement - элемент <div> куда необходимо добавить таблицу
 * @constructor
 */
function TableGenerator(tableJson, wrapper) {
    //private
    var header = tableJson['header'];
    var data = tableJson['data'];
    var extra = tableJson['extra'];
    var properties = tableJson['properties'];

    var that = this; //указатель на текущий объект

    var parentObj = wrapper;

    /**
     * @type HTMLTableElement
     */
    var table = null;

    /**
     * Данная функция будет проверять входные параметры
     */
    (function() {
        if(parentObj == null) {
            console.error('Ошибка элемент для вставки не найден');
            return false;
        }

        _create();

        return true;
    })();

    function _create() {
        table = document.createElement("TABLE");

        //Добавляем свойства для таблицы
        for(var prop in properties) {
            if(properties.hasOwnProperty(prop)) {
                if(!(prop in table)) {
                    //Если свойство не найдено
                    console.warn('Свойство "' + prop + '" не найдено в объекте table');
                    continue;
                }
                table[prop] = properties[prop];
            }
        }

        var cell;

        //Заполняем таблицу основным содержимым
        if(data != undefined) {
            for(var rowIndex in data) {
                if(data.hasOwnProperty(rowIndex)) {
                    var row = table.insertRow(Number(rowIndex));
                    for(var cellIndex in data[rowIndex]) {
                        if(data[rowIndex].hasOwnProperty(cellIndex)) {
                            cell = row.insertCell(Number(cellIndex));
                            cell.innerHTML = data[rowIndex][cellIndex];
                            
                        }
                    }
                }
            }
        }

        //Если есть заголовок
        if(header != undefined) {
            //Создаем шапку таблицы
            var head = table.createTHead();
            var headRow = head.insertRow(0);

            for(var headerColumn in header) {
                if(header.hasOwnProperty(headerColumn)) {
                    cell = headRow.insertCell(Number(headerColumn));
                    cell.innerHTML = header[headerColumn];
                }
            }
        }
    }

    this.render = function() {
        if(table == null) {
            console.error('Таблица не сформирована');
            return false;
        }

        wrapper.appendChild(table);
    }
}


PM MAIL   Вверх
DarkNet23
Дата 24.5.2017, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 24.5.2017

Репутация: нет
Всего: нет



Ребят, не у кого не каких идей?(
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1085 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.