powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Делаю неподвижный заголовок у таблицы, как изменить скрипт расчета ширины столбов ?
12 сообщений из 12, страница 1 из 1
Делаю неподвижный заголовок у таблицы, как изменить скрипт расчета ширины столбов ?
    #39317940
AromaFon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В таблице ( http://aromafon.ru/page4.html) 9 столбов. В заголовке 2 строки. Как изменить код этой функции на 9 столбов.
Что значит переменная a? Что значит переменная b?

Эта функция рассчитывает ширину столбов закрепленного заголовка в таблице из 2 столбов , иначе у закрепленного заголовка
и tbody разные ширины столбов

$(function() {
for (var i = 0; i < 60; i++) {
var a = Math.floor(10 * Math.random());
var b = Math.floor(10 * Math.random());
var row = $("<tr>").append($("<td>").html(a + " + " + b + " ="))
.append($("<td>").html(a + b));
$("tbody").append(row);
}
});

Пример брал отсюда: http://jsfiddle.net/mynBk/
...
Рейтинг: 0 / 0
Делаю неподвижный заголовок у таблицы, как изменить скрипт расчета ширины столбов ?
    #39317994
Фотография user89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AromaFon,

не знаю, подойдет ли для Вашего случая 17822310
...
Рейтинг: 0 / 0
Делаю неподвижный заголовок у таблицы, как изменить скрипт расчета ширины столбов ?
    #39318028
AromaFon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
user89, я посмотрел код. Там цикл по всей таблице. А для меня задачка сводится с тому, чтобы посмотреть ширину столбов в 3 строке тела и сделать ширину столбов в заголовке (строка 1 и строка 2) такую же. Там есть цикл по столбам 1 строки. Буду ковыряться. Сначала научусь менять ширину столба у 1 строки. Потом научусь читать ширину 3 строки тела. Потом научусь делать цикл по столбам. Потом все соединю. Спасибо что ткнули носом. Есть куда плыть.
...
Рейтинг: 0 / 0
Делаю неподвижный заголовок у таблицы, как изменить скрипт расчета ширины столбов ?
    #39318076
AromaFon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
document.all.table1.rows[0].cells[0].width=200; меняю ширину столбов заголовка

, а вот узнать ширину нет..., чтобы потом вместо 200 поставить

alert("ширина 2 строки 1 столба " + document.all.table1.rows[1].cells[0].width);
...
Рейтинг: 0 / 0
Делаю неподвижный заголовок у таблицы, как изменить скрипт расчета ширины столбов ?
    #39318084
AromaFon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Читать widht надо с помощью функции getComputedStyle(), что пихать внутрь ее разбираюсь.
...
Рейтинг: 0 / 0
Делаю неподвижный заголовок у таблицы, как изменить скрипт расчета ширины столбов ?
    #39318090
AromaFon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался, работает если ширина заголовка меньше ширины тела

document.all.table1.rows[0].cells[0].width=getComputedStyle(document.all.table1.rows[1].cells[0]).width;
...
Рейтинг: 0 / 0
Делаю неподвижный заголовок у таблицы, как изменить скрипт расчета ширины столбов ?
    #39318355
AromaFon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
После загрузки страницы мне удалось выровнять ширину столбов у фиксированного заголовка таблицы (thead) и тела таблицы (tbody), пока без цикла, просто 9*2=18 строчек кода (см выше). Так как я использую еще фильтр по каждому столбцу, то при вводе фильтра меняется содержимое таблицы (из-за введенного фильтра), соответственно меняется ширина столбов тела. Можно как-нибудь зафиксировать ширину столбов таблицы тела после загрузки страницы ? Когда скачет ширина столбов достаточно не красиво.
...
Рейтинг: 0 / 0
Делаю неподвижный заголовок у таблицы, как изменить скрипт расчета ширины столбов ?
    #39319108
AromaFon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вешаю событие height на onresize
Код: javascript
1.
2.
<script type="text/javascript">
window.onresize=height; 


Выравниваю колонки заголовка (первые две строки) по телу (т.к. ширина колонок тела, по содержимому) у 1 колонки фиксированная ширина не трогаю
Код: javascript
1.
2.
3.
4.
5.
6.
function sTable()
{ for(var j=0;j<9;j++){
if(j!=1){
document.all.table1.rows[0].cells[j].width=getComputedStyle(document.all.table1.rows[2].cells[j]).width;
document.all.table1.rows[1].cells[j].width=getComputedStyle(document.all.table1.rows[2].cells[j]).width;
}}}


Рассчитываю высоту таблицы и распорки в зависимости от размера экрана
Код: javascript
1.
2.
3.
4.
5.
function height()
{var height=window.innerHeight-70;
document.getElementById('hey').style.height=height+'px';                          [color=green]/*высота распорки больше на заголовок*/[/color]
document.getElementById('tab').style.height=height-15+'px';sTable();           [color=green]/*чтобы заголовок прокручивался*/[/color]
}

После применения фильтра, колонки тела меняют ширину (т.к. нет строк, которые влияли на ширину столбцов). Находим первую видимую строку и выравниваем ширину столбов тела
теперь уже по ширине столбов заголовка

Код: javascript
1.
2.
3.
4.
5.
function ops()
{var table=document.getElementById('table1');
for(var i=2;i< table.rows.length;i++)
{if (table.rows.item(i).style.display!='none')
{for (j=0;j<8;j++) if(j==1){table.rows[i].cells[j].width="100px"}else{table.rows[i].cells[j].width=table.rows[0].cells[j].width};break;}}}


запускается при загрузке страницы
Код: javascript
1.
height();



дальше идет скрипт по фильтру столбов взял с сайта, который я не смог понять. Фильтр по любому вхождению символа, без учета регистра.
http://php-zametki.ru/javascript-laboratoriya/130-javascript-filter-table.html

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
var filterTable=function(b,c)
{ 
	var d=b.getElementsByTagName("TR"),e={},a;
	for(a in c)c.hasOwnProperty(a)&&(e[a]=c[a]instanceof filterTable.Filter?c[a]:new filterTable.Filter(c[a]),e[a]._setAction("onchange",
	function(){var a,c,b;for(c=0;c<d.length;c+=1) for(b in a=d.item(c),e)if(e.hasOwnProperty(b)) if(!1===e[b].validate(a.children[b].innerText)) {a.style.display="none";break}else a.style.display=""
	}))
};
filterTable.Filter=function(b,c,d)
{
	if(!(this instanceof arguments.callee))return new arguments.callee(b,c,d);
    this.filters="[object Array]"=={}.toString.call(b)?b:[b];
    this.validate=function(c){for(var a=0;a<this.filters.length;a+=1)if(!1===this.__validate(c,this.filters[a],a))return!1};
    this.__validate=function(b,a,f){if("undefined"!==typeof c)return c(b,this.filters,f);a.value=a.value.replace(/^\s+$/g,"");return!a.value||a.value==b};
	this._setAction=function(c,a){for(var b=0;b<this.filters.length;b+=1)this.filters[b][d||c]=a};
};


а это настройка фильтров делаете, по колонкам где у вас фильтры input или select.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
filterTable(
            document.getElementById("target"), {
            0: document.getElementById("marka"),
       	2: document.getElementById("grupa"),
            3: new filterTable.Filter(document.getElementById("name"),function(value,filters,i){var c_value = value.toLowerCase(),f_value = filters[i].value.toLowerCase();return c_value.indexOf(f_value)!=-1;},"onkeyup"),			
            4: new filterTable.Filter(document.getElementById("sost"),function(value,filters,i){var c_value = value.toLowerCase(),f_value = filters[i].value.toLowerCase();return c_value.indexOf(f_value)!=-1;},"onkeyup"),			
	5: document.getElementById("inten"),
            6: new filterTable.Filter(document.getElementById("pome"),function(value,filters,i){var c_value = value.toLowerCase(),f_value = filters[i].value.toLowerCase();return c_value.indexOf(f_value)!=-1;},"onkeyup"),			
            7: new filterTable.Filter(document.getElementById("opis"),function(value,filters,i){var c_value = value.toLowerCase(),f_value = filters[i].value.toLowerCase();return c_value.indexOf(f_value)!=-1;},"onkeyup"),			
			}
)

</script>
...
Рейтинг: 0 / 0
Делаю неподвижный заголовок у таблицы, как изменить скрипт расчета ширины столбов ?
    #39319111
AromaFon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все работает, кроме в IE

Все упирается в строку:

Код: html
1.
2.
3.
4.
5.
<style type="text/css">
......
[color=red]thead > tr, tbody{display:block;}[/color]

</style>



Как указать IE, что-то вместо этого. Или как это обойти.

IE не обрабатывает скрипт по высоте таблицы, т.е. таблица вся вылазит целиком и не закрепляет заголовок таблицы.

Ширину столбов тоже не меняет.
...
Рейтинг: 0 / 0
Делаю неподвижный заголовок у таблицы, как изменить скрипт расчета ширины столбов ?
    #39319117
AromaFon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как только разберусь с IE выложу ссылку.
...
Рейтинг: 0 / 0
Делаю неподвижный заголовок у таблицы, как изменить скрипт расчета ширины столбов ?
    #39323343
AromaFon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разобрался, код работает во всех браузерах пример можно посмотреть на

http://www.aromafon.ru/page4.html

Событие onload и onresize;
window.onload=hykt;window.onresize=hykt;

Код: javascript
1.
function hykt(){setTimeout(hyk, 400);}



Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
function hyk(){
var table=document.getElementById('table1');
var height=window.innerHeight-120;
document.getElementById('target').style.height=height+'px';
var j,i,wtd,wth;
for (i=2;i<table.getElementsByTagName("tr").length;i++)
    {
    if (getComputedStyle(table.getElementsByTagName("tr")[i]).display!='none')
	{
    table.getElementsByTagName("tr")[i].getElementsByTagName("td")[0].style.width="55px";
    table.getElementsByTagName("tr")[0].getElementsByTagName("th")[0].style.width="55px";
    table.getElementsByTagName("tr")[1].getElementsByTagName("th")[0].style.width="55px";
    table.getElementsByTagName("tr")[i].getElementsByTagName("td")[1].style.width="100px";
    table.getElementsByTagName("tr")[0].getElementsByTagName("th")[1].style.width="100px";
    table.getElementsByTagName("tr")[1].getElementsByTagName("th")[1].style.width="100px";
	for (j=2;j<9;j++)
    {
    wtd=getComputedStyle(table.getElementsByTagName("tr")[i].getElementsByTagName("td")[j]).width;
    table.getElementsByTagName("tr")[0].getElementsByTagName("th")[j].style.width=wtd;
    table.getElementsByTagName("tr")[1].getElementsByTagName("th")[j].style.width=wtd;
    }   
 break;
}
}
};



После изменения фильтра:
в HTML : <table id="table1" onchange='ops();'>
...
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
function ops()
{
var table=document.getElementById('table1');
var j,i,wtd,wth;
for (i=2;i<table.getElementsByTagName("tr").length;i++)
{
if (getComputedStyle(table.getElementsByTagName("tr")[i]).display!='none')
{
   table.getElementsByTagName("tr")[i].getElementsByTagName("td")[0].style.width="55px";
   table.getElementsByTagName("tr")[0].getElementsByTagName("th")[0].style.width="55px";
   table.getElementsByTagName("tr")[1].getElementsByTagName("th")[0].style.width="55px";

   table.getElementsByTagName("tr")[i].getElementsByTagName("td")[1].style.width="100px";
   table.getElementsByTagName("tr")[0].getElementsByTagName("th")[1].style.width="100px";
   table.getElementsByTagName("tr")[1].getElementsByTagName("th")[1].style.width="100px";

	for (j=2;j<9;j++)
    {
    table.getElementsByTagName("tr")[i].getElementsByTagName("td")[j].style.width=getComputedStyle(table.getElementsByTagName("tr")[0].getElementsByTagName("th")[j]).width;
    table.getElementsByTagName("tr")[0].getElementsByTagName("th")[j].style.width=getComputedStyle(table.getElementsByTagName("tr")[i].getElementsByTagName("td")[j]).width;
    table.getElementsByTagName("tr")[1].getElementsByTagName("th")[j].style.width=getComputedStyle(table.getElementsByTagName("tr")[i].getElementsByTagName("td")[j]).width;
    }
break;
}
}
};
...
Рейтинг: 0 / 0
Делаю неподвижный заголовок у таблицы, как изменить скрипт расчета ширины столбов ?
    #39323344
AromaFon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wtd=getComputedStyle(table.getElementsByTagName("tr")[i].getElementsByTagName("td")[j]).width;

wtd принимает значение, например "100px"

wtd=+.replace("px","");

wtd принимает значение 100.


Очень понравился код... для извлечения из String "100px" - "100" и превращения в число 100.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Делаю неподвижный заголовок у таблицы, как изменить скрипт расчета ширины столбов ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]