Как создать таблицу программно
Оглавление
Как создать таблицу программно
Страница 2
Страница 2 из 2
Пример 1
Далее приведен HTML-код Web-страницы, выводящей на экран таблицу — список
языков программирования.
<HTML> <HEAD>
<TITLE>Языки программирования</TITLE> <SCRIPT
SRC="dynamictable.js"></SCRIPT>
<!-- Предполагается, что объявление объекта DynamicTable помещено в файл
сценария dynamictable.js --> </HEAD> <BODY>
<SCRIPT TYPE="text/javascript">
var JSPS_COMPILING = "Компилируемый";
var JSPS_INTERPRETING = "Интерпретируемый" ;
var tableHead = new Array();
tableHead[0] = new Array("Категория", "Язык");
var tableBody = new Array () ;
tableBody[0] = new Array(JSPS_COMPILING, "C++");
tableBody[l] = new Array(JSPS_INTERPRETING, "JavaScript");
tableBody[2] = new Array(JSPS_COMPILING, "Pascal");
tableBody[3] = new Array(JSPS_COMPILING, "Java");
tableBody[4] = new Array(JSPS_INTERPRETING, "Perl");
tableBody[5] = new Array(JSPS_COMPILING, "Delphi");
tableBody[6] = new Array(JSPS_COMPILING, "Visual Basic");
var tableObject = new DynamicTable(document.body);
tableObject.createTable(tableBody, tableHead, null,
"Языки программирования");
tableObj ect.showTable(); </SCRIPT> </BODY> </HTML>
Таким образом, мы создали простейшую таблицу, данные которой извлекаются из
двух массивов: tableHead (секция "шапки") и tableBody (секция тела). Причем
создали мы ее минимальными усилиями, воспользовавшись объектом DynamicTable.
Народ советует
Код, создающий массивы, на основе которых будет сформирована таблица, можно
вынести в файл сценариев. Таким образом, мы получим возможность править исходные
данные таблицы, не затрагивая файлы с HTML-кодом страниц.
Пример 2
Честно говоря, полученная нами в предыдущем примере таблица не очень красива.
Так, лучше сделать столбец Категория вторым по счету и объединить его ячейки,
содержащие одинаковый текст. Давайте перепишем приведенный ранее код, чтобы он это делал. Заодно привяжем к создаваемой таблице
стиль, чтобы она выглядела приличнее.
<HTML> <HEAD>
<TITLE>Языки программирования</TITLE>
<SCRIPT SRC="dynamictable.js"x/SCRIPT>
<!-- Предполагается, что объявление объекта DynamicTable помещено в
файл сценария dynamictable.js -->
<STYLE>
.mytable { border: thin solid #CCCCCC; } .mytable TD { border: thin solid
#CCCCCC; } </STYLE> </HEAD> <BODY>
<SCRIPT TYPE="text/javascript"> var tableBody = new Array();
tableBody[0] = new Array(0, "C++"); tableBody[1] = new Array(1, "JavaScript");
tableBody[2] = new Array(0, "Pascal"); tableBody[3] = new Array(0, "Java");
tableBody[4] = new Array(1, "Perl"); tableBody[5] = new Array(0, "Delphi");
tableBody[6] = new Array(0, "Visual Basic");
var tableObject = new DynamicTable(document.body, null, "mytable"); var
secondColValue = -1;
function construetTable(pRowNumber, pColNumber, pSectionCode) {
switch (pSectionCode) {
case JSPS_DT_.TS_CAPTION:
return "Языки программирования"; break; case JSPS_DT_TS_HEAD:
return (pColNumber == 1) ? "Категория" : "Язык"; break; case JSPS_DT_TS_BODY:
if (pColNumber ==1) { var colValue = tableBody[pRowNumber][0]; // Проверяем, не
хранит ли верхняя ячейка второго // столбца то же самое значение, и, если так,
// возвращаем псевдоконстанту JSPS_DT_SPANNED_VERT, // чтобы выполнить
объединение ячеек по вертикали
if (secondColValue == colValue)
return JSPS_DT_SPANNED_VERT else {
secondColValue = colValue; return (colValue ==0) ? "Компилируемый" : "
Интерпретируемый" ; } } else
return tableBody[pRowNumber][1] break; case JSPS_DT_TS_FOOT: return null;
break; } } tableObject.createTableAdvanced(constructTable, tableBody.length,
tableBody[0].length, 1); tableObject.showTable(); </SCRIPT> </B0DY>
</HTML>
Здесь ДЛЯ формирования таблицы МЫ ИСПОЛЬЗОВали метод createTableAdvanced
объекта DynamicTable. Это позволило нам, во-первых, изменить порядок столбцов
таблицы без правки массива tableBody, во-вторых, создать секцию "шапки" таблицы
без использования массива, в-третьих, выполнить объединение ячеек второго
столбца, хранящих одинаковые значения. Конечно, пришлось повозиться, но
результат того стоит.
« Пред. - След.