2016-06-21 10 views
6

Opracowuję jeden skrypt JavaScript, który ukryje i pokaże td na moim kliknięciu my button.HTML ukryty td zajmuje białe miejsce w IE6

Kiedy próbuję ukryć td niż IE6 ukryć td i umieścić tam, ale niektóre przestrzenie jednak mój kod działa na wszystkich najnowszych przeglądarce Mörder nawet latest IE.

Mój kod:

data = getElementsByClassName("data", "td", myElement); 
for (i = 0; i < data.length; i++) { 
    td = data[i];       
    tr = td.parentNode; 
    for (j = 0; j < tr.childNodes.length; j++) {   
     tr.childNodes[j].style.display = "none"; 
    } 
} 

Tutaj napisałem własną metodę getElementsByClassName becusae na IE6 nie obsługuje i chcę poparcie IE6. powyższy kod działa we wszystkich innych przeglądarkach z wyjątkiem przeglądarki IE6.

W IE6 moja tabela wygląda następująco:

enter image description here

iw innych przeglądarek

enter image description here

Dzięki za pomoc.

+0

czy możesz umieścić swoje kody w skrzypcach? – iyyappan

+0

Już umieściłem główny "blok kodu" na pytanie? a przy okazji masz IE6? –

+0

Czy próbowałeś użyć 'Element.nodeType'? Podział wiersza HTML tworzy również białe spacje. – PHPglue

Odpowiedz

0

Spróbuj ich zawaleniem:

tr.childNodes[j].style.visibility = "collapse"; 
tr.childNodes[j].style.display = "none"; 

I to nie zaszkodzi, jeśli chcesz również ustawić display-mienia.


Jeśli później chcesz aktywować komórki, można go odwrócić:

tr.childNodes[j].style.visibility = "visible"; 
tr.childNodes[j].style.display = "table-cell"; 

Jeżeli nie jest to praca dla jakiejkolwiek przyczyny, powinniśmy dowiedzieć się, dlaczego wciąż istnieje luka .
Czy możesz użyć narzędzia IE-Inspector/Dev-Tools (F12) i dowiedzieć się, skąd się bierze ta luka?

Mogę sobie wyobrazić, że problemem są tutaj dopełnienie/margines/obramowanie,
lub że jest to problem z legendarnym hasLayout-issue.

+0

Dzięki, czy mogę również wstawić 'tr.childNodes [j] .style.display =" none ";'? –

+0

Nie zaszkodzi, ale dla celów badawczych możesz najpierw wypróbować to i dać mi znać, czy zadziałało :) –

+0

OK, co muszę zrobić, gdy chcę je wyświetlić na ekranie? –

0

IE6 pobiera węzły tekstowe i węzły komentarzy. Być może powinieneś spróbować:

var doc = document; 
function getElementsByClassName(className){ 
    if(doc.getElementsByClassName){ 
    return doc.getElementsByClassName(className); 
    } 
    var r = [], all = doc.getElementsByTagName('*'); 
    for(var i=0,l=all.length; i<l; i++){ 
    var ai = all[i]; 
    if(ai.className === className){ 
     r.push(ai); 
    } 
    } 
    return r; 
} 

var data = getElementsByClassName('data'); 
for(var i=0,l=data.length; i<l; i++){ 
    var kids = data[i].parentNode.childNodes; 
    for(var n=0,q=kids.length; n<q; n++){ 
    var kid = kids[n]; 
    if(kid.nodeType !== 1){ 
     kid.style.display = 'none'; 
    } 
    } 
} 
+0

Dzięki, ale nadal nie działa. Dało to samo wyjście. –

Powiązane problemy