2010-12-31 22 views
0

私は以下のJSを私のページの一番上に持っており、ロード時にすべてのテーブルを首尾よく崩壊させます。 しかし、私は "ctable"のIDを持つ<table id="ctable">テーブルを崩壊させる方法を見つけようとしていますか、折りたたみ可能にするテーブルを指定する他の方法はありますか?特定のテーブルIDを持つテーブルを折りたたみますか? JavaScript

PHPを使用してHTMLをエコーすると、これはfor文がループし、複数のテーブルが存在する可能性があります。あなたがgetElementByIdを探している

echo "<table id=\"ctable\">" 
."<thead><tr><th>" 
."<a href=\"#\" onclick=\"showHide('show".$show->showid."','span".$show->showid."')\"><span id=\"span".$show->showid."\"><img src=\"images\icon_collapse.gif\"></span><span>".$show->showname."</span></a>" 
."</th></tr></thead>"; 
echo "<table><tbody id=\"show".$show->showid."\">" 
."<tr><td rowspan=\"8\"><a class=\"thumbnail\" href=\"#thumb\"><img src=\"".$show->image."\" height=\"150px\" width=\"150px\"><span><img src=\"".$show->image."\"/><br/>".$show->showname."</span></a></td><td rowspan=\"8\"><img class=\"line\" width=\"2\" height=\"100%\"></td><td class=\"jralign\">Show ID:</td><td>".$show->showid."</td></tr>" 
."<tr><td class=\"jralign\">Show Link:</td><td><a href=\"".$show->showlink."\">".$show->showlink."</a></td></tr>" 
."<tr><td class=\"jralign\">Started (Year):</td><td>".$show->started."</td></tr>" 
."<tr><td class=\"jralign\">Ended (Year):</td><td>".$yearended."</td></tr>" 
."<tr><td class=\"jralign\">Seasons:</td><td>".$show->seasons."</td></tr>" 
."<tr><td class=\"jralign\">Classification:</td><td>".$show->classification."</td></tr>" 
."<tr><td class=\"jralign\">Network:</td><td>".$show->network."</td></tr>" 
."<tr><td class=\"jralign\">Status:</td><td>".$show->status."</td></tr>" 
."</tfoot></table>" 
."</table><br/>"; 
+1

IDは一意である必要があります。 – SLaks

答えて

0

私がしたことが正しい方法だったのかどうかはわかりませんが、それは機能します。

は私がしたすべては <tfoot><table>内部 <tbody> htmlタグを変更し、代わりに、現在はテーブルのみの崩壊ではなく、他TFOOT要素を探すために私のオリジナルJavaScriptを更新しました。

これに関連して問題があるかどうか知っていれば、私にこの理由が説明できます。それは優れています。

1

jQueryを使用して
locl = document.getElementById("ctable").getElementsByTagName('tbody'); 

、それは通常、IDは、文書内の各要素に固有のものである

$('#ctable tbody').hide(); 
+0

こんにちはSLaks、提案のおかげで。 JSでコードを試しましたが、うまく動作していないようです。私はをid = ctableに割り当てました。ページをリロードすると、テーブルは自動的に折りたたまれませんが、手動で折りたたむことができます。 – medoix

+0

@medoix:私のコードを読んだ? ''要素のうち、 'ctable'という名前の要素を探します。 – SLaks

+0

はい私はあなたのコードを読んで、元の投稿で上記の編集に従って実装しました。 id = "ctable" – medoix

1

だろう。 (EDIT する必要があります)

あなたは有名な「ドル機能」で素早くIDにアクセスすることができます。例えば、そのIDを持つ要素を返します。これは...

function $(idString) { return document.getElementById(idString); } 

var targetTable = $('ctable');あなたはそれに取り組むことができます。


name属性は、要素をまとめてグループ化するために使用できます。グループを取得するには、getElementsByName()を使用します(IEを除く)。また、name属性は、ほとんどの要素に対して厳密には有効ではないため、実際に使用することは奨励されていません。

しかし、私はその方法がとにかく役に立ちます。この関数はすべてのブラウザで使用できます:

function $N(name,parentObj) { //Can provide parent object to optimize search 
    var ALL, E = new Array(); 
    parentObj ? ALL = $T("*",parentObj) : ALL = $T("*"); 

    for(a=0;a<ALL.length;a++) { 
    ALL[a].getAttribute('name') == name ? E.push(ALL[a]) : null; 
    } 
    return E; 
}; 

...同じ名前の要素のグループを返します。


私たちが対象にしているので、彼らのclass属性で共通の値をしている要素のグループを収集する厳密に有効な方法。

JQueryライブラリには、このすべてを行うさまざまな機能があります。

+0

に変更しようとしました典型的には、各要素に一意でなければなりません。 – Phrogz

+0

@Phrogz - ああ、彼らはいなくてもいいです。 :)ペ​​ージがちょうどもっと予想通りに機能するかどうか。複数のIDがある場合、 'document.getElementById()'は見つかった最初または最後のIDを返します。 – Ben

+0

@スティーブはい、人は、ワイヤで任意のランダムなくそを選んで、ブラウザに「text/html」と呼んでもいいかもしれません。確かにあなたは正しいです:誰かが構文的に無効なページを作った場合、宇宙とユーザーは存在し続けるでしょう。しかし、私はHTML標準に関して[RFC 2119](http://www.faqs.org/rfcs/rfc2119.html)に "must"という単語を使用していました。有効なページについて話している場合、各id属性は一意でなければなりません。 :) – Phrogz

0

HTMLを有効にするには、正確にすべてのIDをに使用することができます。あなたが非表示にするテーブルに同じ(CSS)クラスを割り当てることができるしている(と、それことが可能なはずである)場合

、あなたのお気に入りのJavaScriptフレームワークのクラスセレクタを使用することができます(例:http://api.jquery.com/class-selector/ )。

+0

My IDは、PHPを使用してforeachループ中に割り当てられているため、一意です。だからなぜ私は ''のIDを選択することができません。なぜなら、私は今彼らが何時になるのかを知っているからです。 – medoix

関連する問題