Mam sobie taki kod, który generalnie służy do ukrywania kolumn w tabeli.
Ten alert w kodzie jest w celu debugowania.
Kod ten wysypuje się wyświetlając '33 55'.
Czyli length tabeli ma 55, a na 34 iteracji się wysypuje.
function blah(id){
var lt = document.getElementById(id);
var tds =new Array("d_prognoza","s_prognoza","p_prognoza","z_prognoza","f_prognoza", "d_marza2","s_marza2","p_marza2","z_marza2","f_marza2",
"d_koszyk","s_koszyk","p_koszyk","z_koszyk","f_koszyk", "d_trans","s_trans","p_trans","z_trans","f_trans", "d_mag","s_mag","p_mag","z_mag","f_mag",
"d_zadluzenie","s_zadluzenie","p_zadluzenie","z_zadluzenie","f_zadluzenie","d_mpk","s_mpk","p_mpk","z_mpk","f_mpk","d_rot","s_rot","p_rot","z_rot","f_rot","d_wm2",
"s_wm2","p_wm2","z_wm2","f_wm2","d_wkg","s_wkg","p_wkg","z_wkg","f_wkg","d_wos","s_wos","p_wos","z_wos","f_wos");
for (i=0; i<tds.length; i++)
{
cols = document.getElementsByName(tds[i]);
for(c=0; c<cols.length; c++)
{
var elem = cols[i].parentNode.parentNode.parentNode.parentNode;
if (elem == lt)
{
if (cols[c].style.display === \'\')
cols[c].style.display = \'none\';
else if (cols[c].style.display === \'none\')
cols[c].style.display = \'\';
}
}
alert(i + \' \' + tds.length);
}
}
Pytanie teraz dlaczego?
Wywaliłem zatem trochę danych z tablicy tds, tak, ze length wynosi 28, a tablica wygląda tak:
var tds =new Array("p_zadluzenie","z_zadluzenie","f_zadluzenie","d_mpk","s_mpk","p_mpk","z_mpk","f_mpk","d_rot","s_rot","p_rot","z_rot","f_rot","d_wm2","s_wm2","p_wm2",
"z_wm2","f_wm2","d_wkg","s_wkg","p_wkg","z_wkg","f_wkg","d_wos","s_wos","p_wos","z_wos","f_wos");
Teraz kod przechodzi przez te 28 rekordów bezproblemowo.
Totalnie tego nie rozumiem.
Aha i dodam, ze tych parentNodów mam dlatego aż tyle, bo moja tabela wygląda tak:
<div id = 'id_tabeli'><table><tbody><tr><td name = 'f_mpk'>....</div>
Natomiast sam kod
var elem = cols[i].parentNode.parentNode.parentNode.parentNode;
if (elem == lt)
ma za zadanie rozróżnienie czy dany element o danym name należy do tabeli o danym id.
Bo mam wiele takich tabel o różnym id, lecz z elementami o takim samym name.