• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テーブルの動的作成&オブジェクト配置)

テーブルの動的作成&オブジェクト配置について

このQ&Aのポイント
  • プログラミング初心者ですが、テーブルを動的に作成しながらオブジェクトを配置する方法につまづいています。
  • テーブルは動的に作成できましたが、オブジェクトの配置がうまく行きません。
  • 具体的には、左のセルに項目名を、右のセルにラジオボタンを配置したいです。お手数ですが、どのように修正すれば良いか教えていただけますか?

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

  • ベストアンサー
  • HIRSYU
  • ベストアンサー率51% (45/87)
回答No.3

nameを連番にするなら、番号(i)がname内に入るように変更 "<p><input type='radio' name='radiobutton" + i + "' value='1' >開始 <input type='radio' name='radiobutton" + i + "' value='0'>停止</p>";

Mitsunari
質問者

お礼

教えて頂いた通りに書き直しましたら、期待通りのテーブルを作成することができました。 単純な書き方のミスでお恥ずかしい限りです。 この度はどうも有難うございました。

その他の回答 (2)

  • HIRSYU
  • ベストアンサー率51% (45/87)
回答No.2

JSPとJavaScriptが混合してしまってる気がするのですが・・・・ 動的にテーブルを組みたいってだけなら、JSP側だけで対応しちゃダメですか? <%=(String)request.getAttribute("name"+i★) %> ↑を見る限り、サーバー側でiをループしてる。 しかし、 function initForm(targetForm){ targetForm = setForm(); //テーブルを作成する for(var i=0;i<10';i++){ ↑を見る限り、iはクライアント側でループ? 私の思い違いなら申し訳ないんですが、JavaScriptとJava(JSP/Servlet)は全く別物で処理する場所(クライアント側/サーバー側)も違いますので、そのあたりを整理するといいと思います。

Mitsunari
質問者

補足

はい、まさにおっしゃる通りでした。 var array = new Array(); <% for (int i =0;i<num ;i++ ){%> array.push('<%=(String)request.getAttribute("name"+i) %>'); <%}%> //テーブル作成 for(var i=0;i<num ;i++){ var trgTbl = document.getElementById('tbl'); var colCnt = trgTbl.rows[0].cells.length; var rowCnt = trgTbl.rows.length; var newRow = trgTbl.insertRow(rowCnt); //セルに配置 newRow.insertCell(0).innerText = array[i]; newRow.insertCell(1).innerHTML = "<p><input type='radio' name='radiobutton'+i★ value='1' >開始 <input type='radio' name='radiobutton'+i★ value='0'>停止</p>"; のように、一度名前を配列に詰めてから順に出力することで、項目名の出力はできるようになりました。 アドバイスありがとうございます。 あとは、ラジオボタンのnameを連番になるように配置していきたいのですが、なかなかよい方法がみつかりません・・・。

  • da-te
  • ベストアンサー率37% (3/8)
回答No.1

こんばんは。 ※JSPコンパイル後を前提としてお答えします。 変更前と変更後を載せますね。 変更前 for(var i=0;i<10';i++){ 変更後 for(var i=1;i<=10;i++){ 変更前 newRow.insertCell(0).innerText = '<%=(String)request.getAttribute("name"+i★) %>'; newRow.insertCell(1).innerHTML = "<p><input type='radio' name='radiobutton'+i★ value='1' >開始 <input type='radio' name='radiobutton'+i★ value='0'>停止</p>"; 変更後 newRow.insertCell(0).innerText = '<%=(String)request.getAttribute("name"'+i+') %>'; newRow.insertCell(1).innerHTML = "<p><input type='radio' name='radiobutton'"+i+" value='1' >開始 <input type='radio' name='radiobutton'"+i+" value='0'>停止</p>"; こんな感じでいかがでしょうか。

Mitsunari
質問者

補足

素早いご回答ありがとうございました。 試してみたのですが、 newRow.insertCell(0).innerText = '<%=(String)request.getAttribute("name"'+i+') %>'; でコンパイルエラー。 newRow.insertCell(1).innerHTML = "<p><input type='radio' name='radiobutton'"+i+" value='1' >開始 <input type='radio' name='radiobutton'"+i+" value='0'>停止 はnameがすべてradiobuttonで作成されてしまうようです…。 もう少し自分でも模索してみようと思います。 もし他に方法がありそうでしたら、教えていただけると助かります。

関連するQ&A