• ベストアンサー

tableの各セルに同じ関数を対応させたい

いつもお世話になっております。 今回はテーブルの各セルに同じ関数を対応させたいのですがいい方法が思い浮かばなかったので、そこをお聞きしたいです。 function swap(TD) {  if(TD.style && TD.style.backgroundColor)  {   TD.style.backgroundColor = '';  }  else  {   TD.style.backgroundColor = '#ff0000';  } } (略) <TD onclick="swap(this)"><INPUT type="hidden" name="xxx01" value="0"></TD> <TD onclick="swap(this)"><INPUT type="hidden" name="xxx02" value="0"></TD> <TD onclick="swap(this)"><INPUT type="hidden" name="xxx03" value="0"></TD> <TD onclick="swap(this)"><INPUT type="hidden" name="xxx04" value="0"></TD> swapという関数はセルの色を白と赤に交互に変えるものですが、ここにセルが白なら0を、赤なら1を各テキストに入れるという処理を加えたいです。 しかしながらnameがちょっと違うので一つ一つ関数を作らなくてはいけないのかと思っています。 nameのxxxの部分は共通で、お尻の数字が変わっていきます。 この規則性を使って何とかうまい方法はありませんでしょうか? ご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • urecy
  • ベストアンサー率54% (30/55)
回答No.5

<html> <head> <script type="text/javascript" > function setup(){ td_all = document.getElementsByTagName("td") alert( td_all.length ); for( i = 0 ; i <= td_all.length - 1 ; i ++ ){ td_all[i].onclick = function(){click(this);}; } } function click( td ){ if( td.style && td.style.backgroundColor ){ td.style.backgroundColor = ''; td.firstChild.value = 0; }else{ td.style.backgroundColor = '#ff0000'; td.firstChild.value = 1; } } </script> </head> <body onload=" setup();"> <table> <tbody> <tr> <td><INPUT type="text" name="xxx01" value="0"></td> <td><INPUT type="text" name="xxx02" value="0"></td> <td><INPUT type="text" name="xxx03" value="0"></td> </tr> </tbody> </table> </body> </html> テストをしている最中に、テキストの内容が type「hidden」ではみえなかったので とりあえずtextにしてやってみました。 全部のTDたぐに onclick=" swap(this);" を書くのはめんどくさいかな?と思ったので 勝手にgetElementsByTagNameで、すべてのTDたぐに、swap関数を あてはめちゃってます。 このまま、コピー&貼り付けをしていただければ。 hidden(今は type="text"ですが)のinputタグのvalueに、1と0が入っている様子が確認していただけると思います。 質問者様の要望と違う回答でしたらすみません。

iec1128
質問者

お礼

ご回答ありがとうございます。 動作の確認しました。 要望どおりです。ありがとうございます。 >全部のTDたぐに onclick=" swap(this);" >を書くのはめんどくさいかな?と思ったので >勝手にgetElementsByTagNameで、すべてのTDたぐに、swap関数を >あてはめちゃってます。 まだうまい方法がわからないもので、1000個くらいすべてに書いてました。 これからはこのようにします。 NO.6とあわせて質問以上のアドバイスをありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (5)

  • urecy
  • ベストアンサー率54% (30/55)
回答No.6

No.5です 私が書き込みしたプログラムの inputタグのname属性に xxx01、xxx02、xxx03とそのままのこしてありますが。 それぞれのTDタグの、一番初めの子供の要素(firstChild)として それぞれのinputタグを参照しているので name属性は消去しても、問題なく動作します。 あと、セルが白なら0、赤なら1にしたい!とのことでしたが 0と1を逆にしてしまったようです。 td.firstChild.value = 0;  この行の0を1に、もうひとつは1を0にしていただければOKなはずです。

全文を見る
すると、全ての回答が全文表示されます。
  • OKbokuzyo
  • ベストアンサー率43% (130/296)
回答No.4

No1です。 たびたび失礼します。 Name属性に連番を与える場合に使用した関数の別回答です。 eval関数を使用してもおkです。  function changeValue(Num,TD){   var tblObj = document.getElementById("target");   var TDs = tblObj.getElementsByTagName("td");   var INPUTs = tblObj.getElementsByTagName("input");   //何番目のTDがクリックされたか   for(var i = 0;i<TDs.length;i++){    if(TDs[i] == TD){     //indexは0から始まるので1追加     i++;     break;    }   }   var str = "f." + "xxx" + "0" + i + ".value = Num;"   eval(str);  }

iec1128
質問者

お礼

ご回答ありがとうございました。 ifで1000個に分けるかと思いましたが、サンプルをやってみて動作確認しました。 firstchildというものがよくわからなかったのですが、理解しました。 要望どおりのものができました。 何度もアドバイスいただきまして本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • OKbokuzyo
  • ベストアンサー率43% (130/296)
回答No.3

No1です。 >>if文でやれるとのことでしたが、今回はこのようなものが1000個くらいあるので 質問文に書かれているswap関数のif文のことを言っているのですが‥? 具体的に言えば function swap(TD){  if(TD.style && TD.style.backgroundColor){   TD.style.backgroundColor = '';   TD.firstChild.value = 0;  }else{   TD.style.backgroundColor = '#ff0000';   TD.firstChild.value = 1;  } } こんなカンジです。 TDタグに文字を入れるつもりならfirstChildの代わりにlastChildも使えますし firstChild.nextSiblingとかも使えます。 ↓のようにTDタグからINPUTタグを取ってもいいと思います。 function swap(TD){  var INPUTs = TD.getElementsByTagName("input");  if(TD.style && TD.style.backgroundColor){   TD.style.backgroundColor = '';   INPUTs[0].value = 0;  }else{   TD.style.backgroundColor = '#ff0000';   INPUTs[0].value = 1;  } } Name属性に連番を与えてやりたい場合の例としては  function swap(TD){   if(TD.style && TD.style.backgroundColor){    TD.style.backgroundColor = '';    changeValue(0,TD);   }else{    TD.style.backgroundColor = '#ff0000';    changeValue(1,TD);   }  }  function changeValue(Num,TD){   var tblObj = document.getElementById("target");   var TDs = tblObj.getElementsByTagName("td");   var INPUTs = tblObj.getElementsByTagName("input");   //何番目のTDがクリックされたか   for(var i = 0;i<TDs.length;i++){    if(TDs[i] == TD){     //indexは0から始まるので1追加     i++;     break;    }   }   for(var j = 0;j<INPUTs.length;j++){    //ゼロ埋めはJavaScriptに実装されていないので別途関数が必要    //今回はとりあえずゼロ埋めはせずにテキトーに    if (INPUTs[j].name == "xxx" + "0" + i){     INPUTs[j].value = Num;     break;    }   }  } あんまりスマートとは言い難いですがこんなカンジですかね。 まぁ、質問文のソースは簡単に切り出しただけかと思いますので 上記などを参考に自分に合った方法をご検討ください。

全文を見る
すると、全ての回答が全文表示されます。
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.2

swap関数でinputに辿りつく方法 TD.getElementsByTagName('input')[0] - TD配下のINPUTの配列の#0 TD.firstChild - TDの最初の子要素(※1) inputのnameを導く方法 テーブル全体の構成がわからないのですがカラムや行を得る事ができれば算出できる? TD.cellIndex - 何番目のカラムか得る TD.parentNode.rowIndex - 親(TR)が何行目か得る ※1 IE以外では改行文字なんかもテキストノードとして存在するので <td> <input~ みたいにソース上で改行しているとfirstChildはテキストノードになるので注意が必要

iec1128
質問者

お礼

ご回答ありがとうございました。 firstChildというものをはじめて知り、便利なものだと感じました。 これからはうまく使っていきます。 アドバイスありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • OKbokuzyo
  • ベストアンサー率43% (130/296)
回答No.1

例文だけで考えれば TD.firstChild.value = 1 のような記述をif文に加えれば良いと思うのですが。 あるいは、 <table id="target"> <TD onclick="swap(this)"><INPUT type="hidden" name="xxx01" value="0"></TD> <TD onclick="swap(this)"><INPUT type="hidden" name="xxx02" value="0"></TD> <TD onclick="swap(this)"><INPUT type="hidden" name="xxx03" value="0"></TD> <TD onclick="swap(this)"><INPUT type="hidden" name="xxx04" value="0"></TD> </table> var tblObj = document.getElementById("target"); var TDs = tblObj.getElementsByTagName("td"); とすればインデックス値をうまく利用してできなくはないですけどね。 どういう使い方をされるのか分からないので、本当に参考までですが

iec1128
質問者

補足

ご回答ありがとうございます。 if文でやれるとのことでしたが、今回はこのようなものが1000個くらいあるので、 何とかうまくやりたいのですが、 var tblObj = document.getElementById("target"); var TDs = tblObj.getElementsByTagName("td"); について、説明をいただけたら幸いです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 条件にあったテーブルのセルを数える

    テーブルを作り、それぞれのセルをonmouseoverすると背景が変わるようになっています。そして、背景が変わった後に、何個のセルの背景が変わったのかを知りたいのですが、どうもうまくいきません。alertで確認してもいつも「0」として出てきます。お手数ですが、ご指導お願いします。 <script type="text/javascript"> function bgSwap(TD) { if(window.event.shiftKey == true) { if(TD.style && TD.style.backgroundColor){ TD.style.backgroundColor = ''; } else{ TD.style.backgroundColor = '#000000'; } } } function sendToparent(){ var count=0; var i; var tdname = document.getElementById('F1table').getElementsByTagName('td'); for (i=0; i < tdname.length; i++) { if(tdname[i].style.backgroundColor == "#000000"){ count = count+1; }else { count = count; } } alert(count); } </script> <body> <input type='button' value='set' onclick='sendToparent()'> <table id='F1table' border="0" bordercolor = '#000000' > <tr> <td onmouseover="bgSwap(this)" width="35" height="35"></td> <td onmouseover="bgSwap(this)" width="30" height="30"></td> <td onmouseover="bgSwap(this)" width="30" height="30"></td> <td onmouseover="bgSwap(this)" width="30" height="30"></td> <td onmouseover="bgSwap(this)" width="30" height="30"></td> <td onmouseover="bgSwap(this)" width="30" height="30"></td> <td onmouseover="bgSwap(this)" width="30" height="30"></td> <td onmouseover="bgSwap(this)" width="30" height="30"></td> <td onmouseover="bgSwap(this)" width="30" height="30"></td> <td onmouseover="bgSwap(this)" width="30" height="30"></td> </tr> </table> </body>

  • phpのwhile出力に対するJSを使った計算

    JS初心者です。phpでmysqlからデータを取り出し、whileでテーブルに商品名等と単価・数・小計を出力していますが、各項目の数字を変更しphpで再計算させると当然ながらリロードが発生するのでテーブルの頭に戻って表示されてしまいます。この点を改善しなければならず、計算自体は単純なものですので、JSかAjaxでと思ったのですが、いずれの方法でも最初の一行しか動作いたしません。各エレメントの「id='x'」を「id='x<?=[renban]?>'」とすると横取りソフト上では「id=x3752」のように各行個別に番号が割り当てられているのですが、結果は同じで、JSには関係がないようにも見えます。下記ではwhileの中にJSが入っていますが、<SCRIPT TYPE="text/javascript"> <!-- // --> </SCRIPT> としてヘッダに置くと全く反応せず、ブラウザのエラー表示では「オブジェクトを指定して下さい」と出ます。大変困ってしまいました。どなたかご教授いただけますよう、よろしくお願いいたします。 以下見ずらいとは思いますが、実際のコードの抜粋です。問題はフォーム中ほどの部分です。 //ここまでDBからのデータ呼び出し部分 以下本題です while($row = mysql_fetch_array($result)){ PRINT<<<EOF <form action= "mv6.php" name="form1" method="POST" id="form1"> </tr><tr bgcolor="FFFFFF" onMouseOver="this.style.backgroundColor='#FFCCFF'" onMouseOut="this.style.backgroundColor='#FFFFFF'" > <td width="20"> <INPUT type='hidden' name='renban' value='$row[renban]'> <INPUT type='hidden' name="kind[$row[renban]]" value="ok"> <input type="checkbox" name="del[$row[renban]]" value="ok"></td> <td width="220"> <INPUT size='26' type='text' name='shu[$row[renban]]' value='$row[shu]'class = 'nonbor' onFocus="this.style.backgroundColor='#FFFF99'" onBlur="this.style.backgroundColor='ffffff'" ></td> <td width="300" ><INPUT size='36' type='text' name='hin_na[$row[renban]]' value='$row[hin_na]' id = 'hin_na[$row[renban]]' class = 'nonbor' onFocus="this.style.backgroundColor='#FFFF99'" onBlur="this.style.backgroundColor='ffffff'"></td> <SCRIPT> function cal(){ x = document.getElementById('x').value; y = document.getElementById('y').value; z = x * y; document.getElementById('z').value = z; } </SCRIPT> <td width="90" ><INPUT size='12' type='text' name='x' value='$row[tanka]' id='x' class = 'nonborri' onKeyup="cal(this);" onFocus="this.style.backgroundColor='#FFFF99'" onBlur="this.style.backgroundColor='ffffff'"></td> <td width="90"><INPUT size='12' type='text' name='y' value='$row[kazu]' id='y' class = 'nonborri' onKeyup="cal(this);" onFocus="this.style.backgroundColor='#FFFF99'" onBlur="this.style.backgroundColor='ffffff'"></td> <td width="100"><INPUT size='13' type='text' name='z' value='' id='z' class = 'nonborri' onFocus="this.style.backgroundColor='#FFFF99'" onBlur="this.style.backgroundColor='ffffff'"></td> <td width="240"><INPUT size='40' type='text' name='bikou[$row[renban]]' value='$row[bikou]' class = 'nonbor' onFocus="this.style.backgroundColor='#FFFF99'" onBlur="this.style.backgroundColor='ffffff'"> </td> </tr> </TABLE> EOF; }

  • 複数のテーブルをラジオボタンで背景を変える

    javascriptは、まだ全くの初心者で色々探しながら勉強しています。 過去の質問で動作が似ているものがあったのですが、 複数のテーブルに使えるように変更したいのですが 全くやり方が分かりません。 宜しくお願い致します。 2つのテーブルがあります。 id=AAA と言うテーブルは、今日の天気のラジオボタン id=BBB と言うテーブルは、今日の花粉のラジオボタン だとします。 各テーブル内のラジオボタンが選択されたら、 そのテーブルだけに影響するセルの色変更。 つまり、 AAAのテーブル内のラジオボタン選択時は、AAAのセルの色を黄 BBBのテーブル内のラジオボタン選択時は、BBBのセルの色を赤 にしたいのです。 下記にサンプルコードを書きました。 これだと、AAAのテーブルのラジオボタンをクリックすると BBBのテーブルの背景色がクリアされてしまいます。 どうやって引数を渡していいのか分かりません。 宜しくお願い致します。 <html> <head> <title>test</title> <script type="text/javascript"> <!-- var saveTr; function setBg(rd) { if(saveTr) saveTr.bgColor="white"; saveTr=rd.parentNode.parentNode; saveTr.bgColor="yellow"; } --> </script> </head> <body> <table id='AAA'> <tr><td> 今日の天気 </td></tr> <tr><td> <input type='radio' name='tenki' value='1' onClick="setBg(this);">晴れ<br> </td></tr> <tr><td> <input type='radio' name='tenki' value='2' onClick="setBg(this);">曇り<br> </td></tr> <tr><td> <input type='radio' name='tenki' value='3' onClick="setBg(this);">雨<br> </td></tr> </table> <br> <table id='BBB'> <tr><td> 花粉の量 </td></tr> <tr><td> <input type='radio' name='kafun' value='1' onClick="setBg(this);">多い<br> </td></tr> <tr><td> <input type='radio' name='kafun' value='2' onClick="setBg(this);">普通<br> </td></tr> <tr><td> <input type='radio' name='kafun' value='3' onClick="setBg(this);">少ない<br> </td></tr> </table> </body> </html>

  • jQuery 変数の使い方について

    jQuery 変数の使い方について 【やりたいこと】 ラジオボタンが複数ある為現在のアクションをまとめたい。 ■ $("input:radio[name='radio01']:checked").val(); の'radio01'の部分に変数を使いたい。 ■document.forms["MON"].hradio02.value の"MON"のフォーム名と、「hradio02」name部分に変数を使いたい。 http://kaicoo.blogspot.jp/2012/03/query_30.html 等を参考に元のソースから JSをまとめてみましたが、うまくいきません。 jQuery内の変数の記述方法を 教えていただけませんでしょうか? よろしくお願いいたします。 ★JSをまとめたサンプルソース <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <script src="jquery.js"></script> <script type="text/javascript" language="JavaScript"> <!-- function setVal(obj) { var formname = obj.form.name; var radioname = obj.getAttribute('name'); alert(formname); alert(radioname); //選択したラジオのvalueをhiddenに格納する document.forms[formname].h '+ radioname +' .value = $("input:radio[name='+ radioname +']:checked").val(); alert(document.forms[formname].h '+ radioname +'.value); } //--> </script> </head> <body> <table border="1"> <FORM name="MON"> <tr> <td> 結果: </td> <td> <input type="radio" name="radio01" value="良好" onClick="setVal(this);" >良好 <input type="radio" name="radio01" value="不良" onClick="setVal(this);"> 不良 <input type="hidden" name="hradio01" value="未入力です。"> </td> </tr> <tr> <td> 結果2: </td> <td> <input type="radio" name="radio02" value="良好" onClick="setVal(this);" >良好 <input type="radio" name="radio02" value="不良" onClick="setVal(this);"> 不良 <input type="hidden" name="hradio02" value="未入力です。"> </td> </tr> </table> </Form> </body> </html> ★元のソースのサンプル <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <script src="jquery.js"></script> <script type="text/javascript" language="JavaScript"> <!-- function setVal_01(obj) { document.forms["MON"].hradio01.value = $("input:radio[name='radio01']:checked").val(); alert(document.forms["MON"].hradio01.value); } //--> </script> <script type="text/javascript" language="JavaScript"> <!-- function setVal_02(obj) { document.forms["MON"].hradio02.value = $("input:radio[name='radio02']:checked").val(); alert(document.forms["MON"].hradio02.value); } //--> </script> </head> <body> <table border="1"> <FORM name="MON"> <tr><td> 結果: </td> <td><input type="radio" name="radio01" value="良好" onClick="setVal_01(this);" >良好 <input type="radio" name="radio01" value="不良" onClick="setVal_01(this);"> 不良 <input type="hidden" name="hradio01" value="未入力です。"> </td> </tr> <tr> <td> 結果2: </td> <td> <input type="radio" name="radio02" value="良好" onClick="setVal_02(this);" >良好 <input type="radio" name="radio02" value="不良" onClick="setVal_02(this);"> 不良 <input type="hidden" name="hradio02" value="未入力です。"> </td> </tr> </table> </Form> </body> </html>

  • 表の一部のセルの背景色を変更したい

    いつもお世話になっております。 IE6.0上で動作するものとして質問させていただきます。 以下のソースの中でBODYタグのonloadイベントで initメソッドを呼びだし、メソッド中で 表中の任意のセルの背景色を変更するにはどのように すればよいのでしょうか。 --------------------------------------- <HTML> <HEAD> <script language="JavaScript"> <!-- function init(){ //------ここでで各セルの背景色を変更したいのです。 } --> </script> </HEAD> <BODY onload="init(); "> <FORM name="tttt"> <TABLE border="1" >  <TBODY>   <TR>    <TD onClick="this.style.backgroundColor = 'black';">test</TD>    <TD onClick="this.style.backgroundColor = 'red';">test</TD>    <TD onClick="this.style.backgroundColor = 'yellow';">test</TD>   </TR>  </TBODY> </TABLE> </FORM> </BODY> </HTML> --------------------------------------- ソースは簡略化しておりますので、内容に不備がございましたら、ご容赦ください。 ご回答をよろしくお願いいたします。

    • ベストアンサー
    • HTML
  • クリック時、テーブルの行全体を色づけするには?

    テーブル上でクリックされたら、その行全体を色づけするようにしています。 一見問題なく動作するのですが、ボタンやアンカーなどが含まれたセルがあると、そこだけ色付けができません。 そのセルを一度もクリックしない間は良いのですが、一度でもクリックすると、その後は色づけされません。 セルの中身に関わらず、選択行全体が色づけできるようにするには、どうすればよいでしょうか? IE6での現象です。 ご回答よろしくお願いします。 【HTML部分】 <table> <tr onclick="rowsSelect()"> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td><input type="button" value="子画面" onclick="window.open();"></td> </tr> <tr onclick="rowsSelect()"> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td><input type="button" value="子画面" onclick="window.open();"></td> </tr> <tr onclick="rowsSelect()"> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td>&nbsp;</td> <td><input type="button" value="子画面" onclick="window.open();"></td> </tr> </table> 【JavaScript部分】 var selRow; function rowsSelect() { var r = event.srcElement.parentElement; if(selRow!=null){ selRow.style.backgroundColor="#FFFFFF"; } selRow=r; r.style.backgroundColor="#FFDAB3"; }

  • IEでFORMタグを入れると空白ができる

    IEだけなのですがFORMタグを入れるとTABLEとTABLEの間に空白ができます。 自分なりに切り分けをしたみたところ下記のような結果になりました。 1、XHTML1.0をHTML4.0に変更すると正常に表示 2、Firefoxで開くと正常に表示 3、FORMタグを外すと正常に表示 4、このhtmlファイルをローカル(自身のPC上)で表示すると正常に表示 (Webサーバにアップロードすると現象が現れる) ソースは以下の通りです <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> <table border="0" width="800"><tr> <td><font color="#000080"><b>サブメニュー</b></font></td> <td width="20"></td> <td align="right"> <input type="button" value="戻る" onclick=window.open("http://www.xxxx.xxx/xxx.html","_top")> </td></tr></table> ※この間に空白ができます※ <table border="1" cellspacing="0" cellpadding="5" width="800"> <tr><th nowrap class="l" width="270">商品A</th> <th nowrap class="l" width="100">商品A</th> <th nowrap class="l" width="270">商品名B</th> <th nowrap class="l" width="100">商品B</th> <p></tr> <tr> <form action="./xxx.cgi" method="post" style="margin:0px"> <input type="hidden" name="view" value="0"> <input type="hidden" name="pick" value="0"> <input type="hidden" name="back" value=""> <td valign="top" width="270">あ</td> <td nowrap align="center" valign="top" width="100">あ</td></form> <form action="./xxx.cgi" method="post" style="margin:0px"> <input type="hidden" name="view" value="0"> <input type="hidden" name="pick" value="0"> <input type="hidden" name="back" value=""> <td valign="top" width="270">あ</td> <td nowrap align="center" valign="top" width="100">あ</td></form> </tr> <tr> <form action="./xxx.cgi" method="post" style="margin:0px"> <input type="hidden" name="view" value="0"> <input type="hidden" name="pick" value="0"> <input type="hidden" name="back" value=""> <td valign="top" width="270">あ</td> <td nowrap align="center" valign="top" width="100">あ</td></form> <form action="./xxx.cgi" method="post" style="margin:0px"> <input type="hidden" name="view" value="0"> <input type="hidden" name="pick" value="0"> <input type="hidden" name="back" value=""> <td valign="top" width="270">あ</td> <td nowrap align="center" valign="top" width="100">あ</td></form> </tr> </table> </p> </html> 実際にはもっと長い表になるのですが<tr></tr>を増やせば増やすほど空白が大きくなります。 どうすれば解消できるでしょうか ご存知の方がいらっしゃいましたらご教授願います。 いろいろなサイトを拝見して試してみましたが解決できないのでよろしくお願いします。

    • ベストアンサー
    • HTML
  • 選択したテーブルのセルの背景色を変更させる方法

    こんばんは。 現在クイズをcgiで作っており(20問程度)、自分が選択した答えの背景を変化させたいと考えております。 問題はテーブル内に収めています。 ↓はcgi内で作成している部分のテーブルサンプルです <form action="./test.cgi" method="post"> <table width="520" border="1" cellpadding="5" cellspacing="0" class="check" align="right"> <tr> <td width="420" align="center"><b>$title</b></td> <td width="100" colspan="2" align="center"><b>回答欄</b></td> </tr> <tr> <td width="420">1.$q3</td> <td width="50"><input type="radio" name="3" value="1">$a31</td> <td width="50"><input type="radio" name="3" value="2">$a32</td> </tr> <tr> <td width="420">2.$q4</td> <td width="50"><input type="radio" name="4" value="1">$a41</td> <td width="50"><input type="radio" name="4" value="2">$a42</td> </tr> <tr> <td width="420">3.$q5</td> <td width="50"><input type="radio" name="5" value="1">$a51</td> <td width="50"><input type="radio" name="5" value="2">$a52</td> </tr> <tr> <td width="10"></td> <td width="540" align="center"> <input type="hidden" name="action" value="result"> <input type="image" src=".././img/diagnose.gif" border="0"> </td> </tr> </table> </form> Java Scriptでテーブルのセルにidをふればできると聞き、初心者ながら色々試してみたものの、なかなかうまくいきません。 どなたかご教授お願いいたします。

  • 答えを○か×か表示するソースを教えて下さい。

    JavaScript初心者で、3択問題を作成しています。 問題文や、採点、解答(解説)のソースは記述で来たのですが、クイズに答えてくれた方に問題の正誤が分かりやすいように、正解した問題文の枠の色が青になったり、枠の横に「○」が表示されるようにしたいと考えています。 質問が分かりにくくてすみません!どうか回答をよろしくお願いします! <html> <head> <title>問題3</title> <script language="JavaScript"> <!-- var msg1,msg2,msg3,msg4,msg5,msg6,msg7,msg8,msg9,msg10; function MakeArray(n){this.Length=n;} var cont=new MakeArray(11); function KUIZU1(fm,nn){msg1=fm.value;cont[1]=nn;} function KUIZU2(fm,nn){msg2=fm.value;cont[2]=nn;} function KUIZU3(fm,nn){msg3=fm.value;cont[3]=nn;} function KUIZU4(fm,nn){msg4=fm.value;cont[4]=nn;} function KUIZU5(fm,nn){msg5=fm.value;cont[5]=nn;} function KUIZU6(fm,nn){msg6=fm.value;cont[6]=nn;} function KUIZU7(fm,nn){msg7=fm.value;cont[7]=nn;} function KUIZU8(fm,nn){msg8=fm.value;cont[8]=nn;} function KUIZU9(fm,nn){msg9=fm.value;cont[9]=nn;} function KUIZU10(fm,nn){msg10=fm.value;cont[10]=nn;} function SUM(fm){n1=0; for (i=1;i<11;i++){ n1=n1+cont[i];} if (isNaN(n1)) {alert("入力されてない項目があります。");}else false; fm.answer1.value=n1; } function disp(){document.MyForm.Result.value="第一問:"+msg1+"\n"+"第二問:"+msg2+"\n"+"第三問:"+msg3+"\n"+"第四問:"+msg4+"\n"+"第五問:"+msg5+"\n"+"第六問:"+msg6+"\n"+"第七問:"+msg7+"\n"+"第八問:"+msg8+"\n"+"第九問:"+msg9+"\n"+"第十問:"+msg10; } //--> </script> </head> <body bgcolor="ivory"> <form name="timer"> <input type="text" value="">分 <input type="text" value="">秒<br> <input type="button" value="スタート" onclick="Start()"> <input type="button" value="ストップ" onclick="Stop()"> <input type="button" value="クリア" onclick="ReSet()"> </form> <center> <span>問題3</span> <hr> <h2>ヒント付きテスト (択一問題×10 各1点)</h2> </center> <table border=4> <form method="POST"><tr><td> 1.Microsoft社が開発した表計算ソフトの名前は?<br> </td><td> <input type="radio" name="back" value="不正解(パワーポイント(PowerPoint)は、会議や発表用のスライドを作成する時に使います。)" onClick="KUIZU1(this,0)">パワーポイント<br> </td><td> <input type="radio" name="back" value="不正解(ワード(Word)は、報告書やレポートの文書を作成する時に使います。)" onClick="KUIZU1(this,0)">ワード<BR> </td><td> <input type="radio" name="back" value="正解(正解)" onClick="KUIZU1(this,1)">エクセル<BR> </td><td> <input type="button" value="ヒント" span onClick="document.all.item('moji1').style.visibility='visible'"></span> <div ID="moji1" style="visibility:hidden;">この教材で学習しているのは?</div> </td></tr> </form><form method="POST"> <tr><td> 2.Excelで出来ることは?<br> </td><td> <input type="radio" name="back" value="不正解(Wordの解説。)" onClick="KUIZU2(this,0)">報告書や原稿の文書を作成すること<br> </td><td> <input type="radio" name="back" value="不正解(PowerPointの解説。)" onClick="KUIZU2(this,0)">プレゼンテーション用のスライドを作成すること<BR> </td><td> <input type="radio" name="back" value="正解(正解)" onClick="KUIZU2(this,1)">作成した表の数値からグラフを作成すること<BR> </td><td> <input type="button" value="ヒント" span onClick="document.all.item('moji2').style.visibility='visible'"></span> <div ID="moji2" style="visibility:hidden;"></div> </td></tr> </form><form method="POST"> <tr><td> 10.開いているExcelのファイル名はどこに表示されている?<br> </td><td> <input type="radio" name="back" value="不正解(操作対象となっているセルの位置や、名前を表示しています。。)" onClick="KUIZU10(this,0)">名前ボックス<br> </td><td> <input type="radio" name="back" value="不正解(ワークシートの見出しです。)" onClick="KUIZU10(this,0)">シート見出し<br> </td><td> <input type="radio" name="back" VALUE="正解(正解)" onClick="KUIZU10(this,1)">タイトルバー<br> </td><td> <input type="button" value="ヒント" span onClick="document.all.item('moji10').style.visibility='visible'"></span> <div ID="moji10" style="visibility:hidden;">ヒント</div> </td></tr> </form><form method="POST"><tr><td> </table> </form> <form method="POST" name="MyForm"> 確認の上,採点ボタンを押して下さい。<br> <input type="button" value="採点" onClick="SUM(this.form)"><br> <input type="text" size=6 name="answer1">点<br> 解答ボタンを押して下さい。解答がでます。<br> <input type="button" value="解答" onClick="disp()"><br> <textarea name="Result" rows=10 cols=100></textarea><br> </form> </body> </html>

  • テーブルリンクに付いて

    下記のテーブルリンクを作成しましたがクリックしても説明文が表示されません どなたか教えて下さい <p align="center"> <TABLE HEIGHT=30 BORDER=1 BGCOLOR="#FFFFFF" CELLSPACING=0> <TR> <TD WIDTH=150 ALIGN="center" onClick="window.location.href='http://uye43ys.dousetsu.com/simpleVC_20110728074105.html'" onmouseover="this.style.backgroundColor='#80FFFF';" onmouseout="this.style.backgroundColor=''" STYLE="cursor:hand;">特典サービス</TD> <TD WIDTH=150 ALIGN="center" onClick="window.location.href='http://uye43ys.dousetsu.com/simpleVC_20110728075504.html'" onmouseover="this.style.backgroundColor='#80FFFF';" onmouseout="this.style.backgroundColor=''" STYLE="cursor:hand;">車検費用</TD>