/var/log/life.log
Блог программиста из солнечной Бурятии

Динамическое удаление и добавление строк и столбцов в таблице

Когда начал писать скрипт для создания создания шаблонов для вышивки, я даже на знал как он будет выглядеть и что делать. Решив всё делать на JavaScript, начал искать как удалить строки из таблицы, и нашёл вполне вменяемый «мануал» http://sudoku.org.ua/rus/blog/2006/03/09/deltablerows1/ . Только там удалялись лишь строки и по id, для меня id были лишними т.к. удалял я строки снизу, и мне также нужно было не только удаление строк, но и удаление столбцов а так же их динамическое добавление. Вот что получилось:
сама таблица

<table  id="canvas">
...
</table>

и две функции
изменение количества строк

function chWidht(control){
    var value = control.value;
    if(/^[0-9]*$/.test(value)){
        var tbody = document.getElementById('canvas').getElementsByTagName('TBODY')[0];
        var newwidth = parseInt(value);
        var diff = width - newwidth;
        if (diff > 0){
            //удаляем
            for (i = 0; i < height; i++){
                for(j = 0; j < diff ; j++){
                    tbody.rows[i].removeChild(tbody.rows[i].lastChild);
                }
            }
            width = newwidth;
        } else if (diff < 0) {
            //добавляем
            for (i = 0; i < height; i++){
                for(j = diff; j < 0 ; j++){
                    var row = tbody.rows[i];
                    var td = document.createElement("TD");
                    row.appendChild(td);
                }
            }
            width = newwidth;
        } else {}
    } else {
        alert("введите число");
        control.focus();
    }
}

изменение количества столбцов

function chHeight(control){
    var value = control.value;
    if(/^[0-9]*$/.test(value)){
        var tbody = document.getElementById('canvas').getElementsByTagName('TBODY')[0];
        var newheight = parseInt(value);
        var diff = height - newheight;
        if (diff > 0){
            //удаляем
            for(j = 0; j < diff ; j++){
                tbody.removeChild(tbody.lastChild);
            }
            height = newheight;
        } else if (diff < 0) {
            //добавляем
            for (i = diff; i < 0; i++ ){
                var row = document.createElement("TR");
                tbody.appendChild(row);
                for(j = 0; j < width; j++){
                    var td = document.createElement("TD");
                    row.appendChild(td);
                }
            }
            height = newheight;
        } else {}
    } else {
        alert("введите число");
        control.focus();
    }
}

Рабочий пример можно глянуть тут
в JavaScript не силён, поэтому что то может быть и неправильно, но работает)

5 комментариев на запись «Динамическое удаление и добавление строк и столбцов в таблице»

  1. TigeRuS пишет:

    После уже я вспомнил про прогу, которая конвертирует графические рисунки в текст, основанной на среднем значении RGB пикселей в поделенном участке рисунка. При этом можно как уменьшать так и увеличивать количество блоков, а точнее количество символов. Так вот ее тоже можно использовать в качестве создания сетки шаблонов. А что взял любой рисунок или нарисовал, а потом лишь конвертнул в набор необходимых символов. Прога ImgToTxt

  2. TigeRuS пишет:

    После уже я вспомнил про прогу, которая конвертирует графические рисунки в текст, основанной на среднем значении RGB пикселей в поделенном участке рисунка. При этом можно как уменьшать так и увеличивать количество блоков, а точнее количество символов. Так вот ее тоже можно использовать в качестве создания сетки шаблонов. А что взял любой рисунок или нарисовал, а потом лишь конвертнул в набор необходимых символов. Прога ImgToTxt

  3. VampiRUS пишет:

    хз хз, к тому же виндой не пользуюсь) дома по крайней мере.

  4. VampiRUS пишет:

    хз хз, к тому же виндой не пользуюсь) дома по крайней мере.

  5. Asas пишет:

    аффтар идиот

Оставить комментарий

Вы так же можете оставить комментарий используя ваш OpenId, для этого нужно войти.