Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Создание таблицы с помощью DOM


Автор: Mushu 11.7.2007, 10:56
Скажите пожайлуста, как можно Создать таблицу с помощью DOM  и при создание внасить уже данные в клетки из  массива (массив произвольный данных, ) и как добавить клетке свойства(например стиль и айдэ).
  
Вопрос номер 2 как по таблице потом передвигаться, чтоб узнать какие данные в клетке. 


Автор: Zeroglif 11.7.2007, 11:09
Цитата(Mushu @  11.7.2007,  10:56 Найти цитируемый пост)
как можно Создать таблицу с помощью DOM

http://www.google.com/search?hl=ru&q=create+table+dom+javascript&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=

Автор: Mushu 11.7.2007, 11:23
Он наглядно не подсказал, если кто встречался с этим можно пример кода.

Автор: Mymik 11.7.2007, 11:30
Функция createTable занимается добавление таблицы в body. А readTable занимается чтением таблицы
Код

<html>
<head>
<script type="text/javascript">
var myArray = new Array();
myArray[0] = new Array(1,2,3);
myArray[1] = new Array(1,2,3);
myArray[2] = new Array(1,2,3);

function createTable(tableID) 
{
    if(document.getElementById(tableID))
    {
        alert("таблица уже существует");
        return;
    }
    /* Создаем таблицу */
        var tbl=document.createElement("table");
    /* Назначаем ID */
    tbl.id=tableID;
        var tblBody=document.createElement("tbody");

    for(y=0;y<myArray.length;y++)
    {
        /* Создаем строчку */
             var row=document.createElement("tr");
        for(x=0;x<myArray[y].length;x++)
        {
            /* Создаем ячейку */
                 var cell=document.createElement("td");
            /* Заполняем ячейку */
                 cell.appendChild(document.createTextNode(myArray[y][x]));
            /* Заполняем стиль */
            cell.style.background=x%2?"green":"red";
            /* Добавляем ячейку в строку */
                 row.appendChild(cell);
            
        }
        /* Добавляем строку в таблицу */
             tblBody.appendChild(row);

    }
    /* Добавляем body в table */
        tbl.appendChild(tblBody);
    /* Добавляем таблицу на страницу */
        document.getElementsByTagName("body")[0].appendChild(tbl);
}
function readTable(tableID)
{
    
    var tbl=document.getElementById(tableID);
    if(!tbl)
    {
        alert("Таблица не существует");
        return;
    }
    /* Проходим по всем строкам таблицы */
    for(y=0;y<tbl.rows.length;y++)
    {
        /* Проходим по всем ячейкам строки */
        for(x=0;x<tbl.rows[y].cells.length;x++)
        {
            /* Получаем текст в ячейке */
            tbl.rows[y].cells[x].innerHTML;
            /* Добавляем текст на страницу */
            document.getElementsByTagName("body")[0].appendChild(document.createTextNode(tbl.rows[y].cells[x].innerHTML));
        }
        /* Перевод на следующию строчку */
        document.getElementsByTagName("body")[0].appendChild(document.createElement("BR"));
    }
}
</script>
</head>
<body>
    <input type="button" onclick="createTable('table1')" value="create table" /> <input type="button" onclick="readTable('table1')" value="read table" />
</body>
</html>

Автор: Mushu 11.7.2007, 11:36
Mymik  большое спасибо кратко ясно и понятно

Добавлено через 10 минут
Рецепт в капилку

Автор: Loengreen 15.7.2007, 20:10
Возникла такая проблема.
Есть таблица. 
По нажатию на ячейку должна добавиться новая строка под строкой, которой принадлежит данная ячейка.
Не подскажете как можно это реализовать?

tbl.appendChild(row); - почему-то успешно вставляет строку в конце таблицы в firefox, но ничего не меняет в IE... :(

 

Автор: SelenIT 15.7.2007, 21:21
Loengreen,
1) Внимательно изучите пример Mymikа - там есть подсказка для Вас ("недостающее звено" между <table> и <tr>).
2) У таблиц есть собственные DOM-методы - insertRow, insertCell и т.д. Имхо, есть смысл присмотреться к ним...

Автор: Loengreen 15.7.2007, 23:13
Ой... Проблема  в том что в js я новичок.
Пробовал спросить у yandex-a - ничего толком не нашел. :(
Мне поставили конкретную задачу - сделать редактируемую таблицу (я вообще-то занимаюсь версткой, на js пишу только простенькие скрипты типа по наведению или клику мыши сделать объект видимым и тому подобное). Может быть вы посоветуете книгу или какой-нибудь хелп, где помимо описания функций есть маленькие примеры по применению (как в Macromedia Flash). 
Из тех книг, которые удалось скачать мне не в одной нет работы с html таблицами. :(   


Спасибо, разобрался! smile

Автор: Alx 28.9.2007, 14:22
http://www.w3schools.com/htmldom/dom_obj_table.asp
http://www.w3schools.com/htmldom/dom_obj_tablerow.asp
http://www.w3schools.com/htmldom/dom_obj_tabledata.asp

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)