Показать сообщение отдельно
  #1 (permalink)  
Старый 24.05.2017, 03:07
Новичок на форуме
Отправить личное сообщение для DarkNet32 Посмотреть профиль Найти все сообщения от DarkNet32
 
Регистрация: 24.05.2017
Сообщений: 4

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

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

Код:
<!DOCTYPE html>
<html>
	<head>
		<title>Динамическая таблица</title>
        <script type="text/javascript" src="tabl.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);
    }
}
Ответить с цитированием