2012-04-22 18 views
0

テーブルの行数が空白でない場合、各行が表示されるいくつかの行のテーブルがあります。私は作業スクリプトを書いていますが、私はJavascriptを初めて使っていて、それがあまりにも関わっているように感じます。言い換えれば、この問題に対するより良い、より簡潔な解決策がありますか?私はいくつかの場所で同じソリューションを実行する必要がありますので、より良いソリューションは大歓迎です。どうもありがとう。テーブルの行の可視性を確認して設定する

<script language="javascript"> 
    function MyTableRow(){ 
    //Row 1 
if(document.getElementById("DQ23I1010").value=="") 
    { 
    //alert("test"); 
    document.getElementById("myRow1").style.display='none'; 
} 
else 
{ 
    document.getElementById("myRow1").style.display='block'; 
} 

//Row 2 
if(document.getElementById("DQ24I1011").value=="") 
    { 
    document.getElementById("myRow2").style.display='none'; 
} 
else 
{ 
    document.getElementById("myRow2").style.display='block'; 
} 
//Row 3 
if(document.getElementById("DQ25I1012").value=="") 
{ 
    document.getElementById("myRow3").style.display='none'; 
} 
else 
{ 
    document.getElementById("myRow3").style.display='block'; 
} 
//Row 4 
if(document.getElementById("DQ26I1013").value=="") 
{ 
    document.getElementById("myRow4").style.display='none'; 
} 
else 
{ 
    document.getElementById("myRow4").style.display='block'; 
} 
//Row 5 
    if(document.getElementById("DQ27I1014").value=="") 
{ 
    document.getElementById("myRow5").style.display='none'; 
} 
else 
{ 
    document.getElementById("myRow5").style.display='block'; 
} 
//Row 6 
if(document.getElementById("DQ28I1015").value=="") 
{ 
    document.getElementById("myRow6").style.display='none'; 
} 
else 
{ 
    document.getElementById("myRow6").style.display='block'; 
} 
//Row 7 
if(document.getElementById("DQ29I1016").value=="") 
{ 
    document.getElementById("myRow7").style.display='none'; 
} 
else 
{ 
    document.getElementById("myRow7").style.display='block'; 
} 
//Row 8 
if(document.getElementById("DQ30I1017").value=="") 
{ 
    document.getElementById("myRow8").style.display='none'; 
} 
else 
{ 
    document.getElementById("myRow8").style.display='block'; 
} 
    //Row 9 
if(document.getElementById("DQ31I1018").value=="") 
{ 
    document.getElementById("myRow9").style.display='none'; 
} 
else 
{ 
    document.getElementById("myRow9").style.display='block'; 
} 
//Row 10 
if(document.getElementById("DQ32I1019").value=="") 
{ 
    document.getElementById("myRow10").style.display='none'; 
} 
else 
{ 
    document.getElementById("myRow10").style.display='block'; 
} 
} 

</script> 
+0

純粋なjでのみこれを実行しようとしていますか? – ocanal

+0

あなたは要素 'function elm(id){return document.getElementById(id)}を取得する関数を作成することから始められます。 – ajax333221

+0

@ jk1844 - テーブル行を「ブロック」に設定しないで、デフォルトの* display *値は[table (http://www.w3.org/TR/CSS2/sample.html)。 "none"と ""(空の文字列)の間で切り替えます。そうすれば、要素がデフォルトまたはそれ以外の方法で設定されたものを採用します。 – RobG

答えて

4

はい、簡単に短くすることができます...

function MyTableRow() { 
    for (var i = 1; i <= 10; i++) { 
     var row = document.getElementById("myRow" + i); 
     if (document.getElementById("DQ" + (22 + i) + "I10" + (i + 9)).value == "") 
      row.style.display = 'none'; 
     else 
      row.style.display = ''; 
    } 
} 

これはもっと良い解決策かもしれませんが、もっと情報が必要です。

+1

+1私はjqueryの回答よりもjquerylessの回答を優先します。 (私はjqueryがJSの基礎を知らないときに助けよりも害を加えると思う) – ajax333221

+0

@ ajax333221:同意。 –

+2

テーブルの行を「ブロック」に設定しないでください。デフォルトの表示*値は[table-row]です(http://www.w3.org/TR/CSS2/sample.html)。 "none"と ""(空の文字列)の間で切り替えます。そうすれば、要素がデフォルトまたはそれ以外の方法で設定されたものを採用します。 – RobG

0

私はクラス=「行」

<table> 
    <tr class="row"> 
     <td></td> 
    </tr> 
    <tr class="row"> 
     <td></td> 
    </tr> 
</table> 

にあなたの行クラスを設定し、jqueryは、あなたがそのような何かを助けることができると思う、あなたはコードは次のようになります。

var showRow = true; 
$(".row").each(function(index){ 
    if (!showRow) { 
     $(this).css("display", "none"); 
    } 
    if ($this.find(".dataItem").val() == "") { 
     showRow = false; 
    } 
}); 
+0

これは全く新しいものです... jsfiddle.netで親切に私のためにできる例がありますか?多くはおおよそ – jk1844

+0

これは質問のコードと同じではありません。 OPがjQueryを使用していることはわかりません。 –

関連する問題