Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   переписать таблицу (https://javascript.ru/forum/dom-window/4486-perepisat-tablicu.html)

HelpeR 26.07.2009 18:57

переписать таблицу
 
Здравствуйте!
Имеется код для создания таблицы, долго думал, как же можно создать ее но более красивым способом
tblStyle = {
		position : 'absolute',
		display : 'none',
		opacity : '0',
		filter : 'alpha(opacity=0)',
		fontFamily : pr_font,
		fontSize : '11px',
		color : pr_font_color,
		border : '0px'
	}
	
    // создаем саму подсказку
	this.table = document.createElement('table');
	
	for(var z in tblStyle) {
	    this.table.style[z] = tblStyle[z];
	}
	
	for(var i = 0; i < 2; i++) {
	    this.table.insertRow(i);
		
		for(var a = 0; a < 4; a++) {
		    this.table.rows[i].insertCell(a);
		}
	}
	
	this.table.rows[0].cells[1].colSpan = 2;
	this.table.rows[0].deleteCell(2);
	this.table.cellSpacing = 0;
	this.table.cellPadding = 0;
	
	var cell = this.table.rows[0].cells[0];
	cell.style.width = '4px';
	(img = new Image()).src = pr_bg_dir + pr_kind + '/borderLeft.gif';
	cell.appendChild(img);
	
	var cell = this.table.rows[0].cells[1];
	cell.align = 'center';
	cell.style.backgroundImage = 'url(' + pr_bg_dir + pr_kind + '/centerLine.gif)';
	cell.style.backgroundPosition = 'top left';
	cell.style.backgroundRepeat = 'repeat-x';
	
	var cell = this.table.rows[0].cells[2];
	cell.style.width = '8px';
	(img = new Image()).src = pr_bg_dir + pr_kind + '/borderRight.gif';
	cell.appendChild(img);
	
	var cell = this.table.rows[1].cells[0];
	cell.style.width = '4px';
	cell.align = 'left';
	cell.style.verticalAlign = 'top';
	(img = new Image()).src = pr_bg_dir + pr_kind + '/borderLeftBottom.gif';
	cell.appendChild(img);
	
	var cell = this.table.rows[1].cells[1];
	cell.style.width = '33px';
	cell.align = 'left';
	cell.style.verticalAlign = 'top';
	(img = new Image()).src = pr_bg_dir + pr_kind + '/bottom.gif';
	cell.appendChild(img);
	
	var cell = this.table.rows[1].cells[2];
	cell.style.backgroundImage = 'url(' + pr_bg_dir + pr_kind + '/bottomLine.gif)';
	cell.style.backgroundPosition = 'top';
	cell.style.backgroundRepeat = 'repeat-x';
	
	var cell = this.table.rows[1].cells[3];
	cell.style.width = '8px';
	cell.align = 'left';
	cell.style.verticalAlign = 'top';
	(img = new Image()).src = pr_bg_dir + pr_kind + '/borderRightBottom.gif';
	cell.appendChild(img);
	
	document.body.appendChild(this.table);

x-yuri 26.07.2009 19:43

var f = new DocumentFragment(); // или div
    // если с DocumentFragment такое не прокатит
f.innerHTML = '<table ...>'+
                  '<tr><td>...'+
                  '<tr><td>...'+
              '</table>';

а стили я бы все-таки в css вынес

HelpeR 26.07.2009 19:50

x-yuri, до такого способа я додумался, подумал, может еще есть что нибудь кроме innerHTML ??

x-yuri 26.07.2009 20:08

еще можно твой код отрефакторить. Только непонятно зачем создавать каждый элемент, если можно все одной строкой

HelpeR 26.07.2009 20:12

Цитата:

Сообщение от x-yuri (Сообщение 25369)
еще можно твой код отрефакторить.

что такое отрефакторить?

B~Vladi 27.07.2009 09:58

Цитата:

Сообщение от x-yuri
var f = new DocumentFragment();

Это что за конструкция?!:blink:
И почему она может не прокатить?!

Везде прокатывает такое:
var f = document.createDocumentFragment();

x-yuri 29.07.2009 22:15

Цитата:

Сообщение от HelpeR
что такое отрефакторить?

в твоем случае насоздавать функций, за счет которых твой скрипт уменьшится, но innerHTML имхо тут самый лучший вариант. P.s. рефакторинг

Цитата:

Сообщение от B~Vladi
Это что за конструкция?!

ошибся


Часовой пояс GMT +3, время: 16:57.