2016-06-21 19 views
6

Sto sviluppando uno script JavaScript che nasconderà e mostrerà lo td sul mio scatto button.HTML nascosto td occupa spazio bianco in IE6

quando sto cercando di nascondere il td rispetto IE6 nascondere il td e mettere i alcuni spazi lì, ma comunque il mio codice sta lavorando alla tutte le ultime novità del browser morder anche il latest IE.

Il mio codice:

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"; 
    } 
} 

Qui ho scritto il mio metodo getElementsByClassName becusae il IE6 non lo supporta e voglio il supporto IE6. sopra il codice funziona trovare in tutti gli altri browser tranne il browser IE6.

in IE6 mia tavola simile a questa:

enter image description here

E in altri browser

enter image description here

grazie per l'aiuto.

+0

puoi mettere i tuoi codici in fiddle? – iyyappan

+0

Ho già inserito il principale 'blocco di codice' alla domanda? e dal modo in cui hai l'IE6? –

+0

Hai provato a utilizzare 'Element.nodeType'? Un'interruzione di riga HTML crea anche uno spazio bianco. – PHPglue

risposta

0

Prova loro collasso:

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

E non sarebbe male, se avessi anche impostare la visualizzazione-proprietà.


Se successivamente si desidera riattivare le cellule, si potrebbe invertire:

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

Nel caso questo non funziona per qualsiasi motivo, dobbiamo scoprire perché c'è ancora il divario .
Potresti utilizzare IE-Inspector/Dev-Tools (F12) e scoprire da dove proviene la differenza?

Posso immaginare che il padding/margin/border-properties sia il problema qui,
o che questo sia un problema con il leggendario hasLayout-issue.

+0

Grazie, posso anche mettere il 'tr.childNodes [j] .style.display =" none ";'? –

+0

Non sarebbe male, ma a scopo di ricerca potresti prima provare questo e farmi sapere se ha funzionato :) –

+0

Ok, cosa devo fare quando voglio visualizzarli sullo schermo? –

0

IE6 riceve nodi di testo e commenta nodi. Forse dovresti provare questo:

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

Grazie, ma ancora non funziona. Ha dato lo stesso risultato. –