2016-06-21 14 views
6

JavaScriptのスクリプトを開発していますが、私のbuttonクリックでtdが表示されなくなります。 IE6よりHTMLで隠されたtdがIE6の空白を取ります

私はtdを非表示にしようとしているTDを隠し、そこにいくつかのスペースを置くが、しかし、私のコードでもlatest IEすべての最新morderブラウザに取り組んでいます。

マイコード:ここで

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

私はそれをサポートし、私はIE6サポートを望んでいないIE6 becusae自分getElementsByClassName方法を書きました。上記のコードは、IE6ブラウザを除く他のすべてのブラウザで使用できます。

enter image description here

そして、他のブラウザのヘルプは

enter image description here

おかげで:

IE6で私のテーブルには、このように見えます。

+0

あなたはコードをフィドルに置くことができますか? – iyyappan

+0

私はすでに主要な 'code block 'を質問に入れましたか?あなたはIE6を持っているのですか? –

+0

'Element.nodeType'を使ってみましたか? HTML改行も空白を作成します。 – PHPglue

答えて

0

はそれらを崩壊してみてください。

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

そして、あなたはまた、表示プロパティを設定したい場合には、損はありません。


あなたが後に細胞を再活性化したい場合、あなたはそれを逆にできます。

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

は、このギャップがまだあるなぜ我々は見つける必要があります何らかの理由、 のために働くべきではありません。
IE-Inspector/Dev-Tools(F12)を使用して、ギャップがどこから来るのか調べることができますか?

私は、パディング/マージン/ボーダー・プロパティは、ここで問題にしている
を想像できるか、これは伝説のhasLayout-issueに問題があること。

+0

ありがとう、私は 'tr.childNodes [j] .style.display =" none ";'? –

+0

それは傷つけることはありませんが、研究目的のために、まずこれを試して、それが働いているかどうかを私に教えてください:) –

+0

さて、私はそれらを画面に戻したいときに何をしなければなりませんか? –

0

IE6はテキストノードとコメントノードを取得します。おそらくあなたはこれを試してみるべきです:

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

ありがとう、しかし、それでも動作しません。それは同じ出力を与えた。 –

関連する問題