初めての javascript
初めての javascript。
<%#### 準備 ####%> <% # <td><span id="c0101"><%= @gian.get( "無記名","出欠" ,"人数") % ></span></td> # <td><%= f.text_field @gian.names_to_field_name("無記名","賛成" ,"人数"), # :size=>6, :id=>"c0102", :onfocus =>"calc()", :onkeyup=>"calc()" % ></td> # <td><%= f.text_field @gian.names_to_field_name("無記名","反対" ,"人数"), ・・ # <td><%= f.text_field @gian.names_to_field_name("無記名","棄権" ,"人数"), ・・ # <td><span id="c0105"><%= @gian.get( "無記名","未集計","人数")% ></span></td> # 項目表示のHTML文字列/無記名投票のリアルタイム計算用のタグを返す。 def content(syu,san,bas,f,narabi) mukimei = @gian.syukketu_name_num("無記名") case syu when mukimei field_name = @gian.nums_to_field_name(syu,san,bas) id = field_name+"#{narabi}" case san when @gian.sanpi_name_num("合計"),@gian.sanpi_name_num("未集計") %!<span id="#{id}">#{@gian.get(syu,san,bas)}</span>! else f.text_field(field_name, :id=>id, :size=>6, :onfocus =>"calc(#{narabi})", :onkeyup=>"calc(#{narabi})" ) end else @syuukei.get(syu,san,bas) end end %> <script type="text/javascript"> // 無記名投票のリアルタイム計算を行う。 // 同じデータが「縦並び」「横並び」の2ヶ所に表示されているので、コピーする。 function calc(narabi) { if( narabi == 1 ){ var f0001 = document.getElementById('f0001').innerText; var f0101 = document.getElementById('f0101').value; // name="gian[f010]" var f0201 = document.getElementById('f0201').value; var f0301 = document.getElementById('f0301').value; var f0401 = parseInt(f0001) - parseInt(f0101) - parseInt(f0201) - parseInt(f0301); document.getElementById('f0401').innerHTML = f0401; // var f0011 = document.getElementById('f0011').innerText; var f0111 = document.getElementById('f0111').value; // name="gian[f010]" var f0211 = document.getElementById('f0211').value; var f0311 = document.getElementById('f0311').value; var f0411 = parseInt(f0011) - parseInt(f0111) - parseInt(f0211) - parseInt(f0311); document.getElementById('f0411').innerHTML = f0411; // document.getElementById('f0002').innerHTML = f0001; document.getElementById('f0102').value = f0101; document.getElementById('f0202').value = f0201; document.getElementById('f0302').value = f0301; document.getElementById('f0402').innerHTML = f0401; document.getElementById('f0012').innerHTML = f0011; document.getElementById('f0112').value = f0111; document.getElementById('f0212').value = f0211; document.getElementById('f0312').value = f0311; document.getElementById('f0412').innerHTML = f0411; } else { var f0002 = document.getElementById('f0002').innerText; var f0102 = document.getElementById('f0102').value; // name="gian[f010]" var f0202 = document.getElementById('f0202').value; var f0302 = document.getElementById('f0302').value; var f0402 = parseInt(f0002) - parseInt(f0102) - parseInt(f0202) - parseInt(f0302); document.getElementById('f0402').innerHTML = f0402; // var f0012 = document.getElementById('f0012').innerText; var f0112 = document.getElementById('f0112').value; // name="gian[f010]" var f0212 = document.getElementById('f0212').value; var f0312 = document.getElementById('f0312').value; var f0412 = parseInt(f0012) - parseInt(f0112) - parseInt(f0212) - parseInt(f0312); document.getElementById('f0412').innerHTML = f0412; // document.getElementById('f0001').innerHTML = f0002; document.getElementById('f0101').value = f0102; document.getElementById('f0201').value = f0202; document.getElementById('f0301').value = f0302; document.getElementById('f0401').innerHTML = f0402; document.getElementById('f0011').innerHTML = f0012; document.getElementById('f0111').value = f0112; document.getElementById('f0211').value = f0212; document.getElementById('f0311').value = f0312; document.getElementById('f0411').innerHTML = f0412; } } </script> <%#### 描画 ####%> <% form_for @gian do |f| %> <% if %w(両方 縦).include?( sanpi_narabi ) %> <% @syuukei.base_titles.size.times do |bas| %> <% next unless( base==@syuukei.base_titles[bas] || base == "両方") %> <p><b><%=h @syuukei.base_titles[bas] %>ベース(賛否縦並び)</b></p> <table> <tr bgcolor="#<%= ((line_color_sw ^= true) ? 'f8b0f8' : 'e0f8f8') %>" > <th>項目</th> <%## 項目 現実出席(無記名) 現実出席(記名) 書面出席 代理出席 合計(無記名) 合計(記名) 欠席 総数(無記名) 総数(記名) ##%> <% @syuukei.syukketu_titles.each_with_index do |title,syu| %> <% next if skip_syu(syu,kimei,bosuu) %> <th><%= syu_title(syu) %></th> <% end %> </tr> <%## 項目 合計(出欠) 賛成 反対 棄権 未集計 ##%> <% @syuukei.sanpi_titles.size.times do |san| %> <% next if skip_san(san,saiketu) %> <tr bgcolor="#<%= ((line_color_sw ^= true) ? 'f8b0f8' : 'e0f8f8') %>" > <td><%= @syuukei.sanpi_titles[san] %></td> <% @syuukei.syukketu_titles.size.times do |syu| %> <% next if skip_syu(syu,kimei,bosuu) %> <td><%= content(syu,san,bas,f,1) %></td> ← ★ <% end %> </tr> <% end %> </table> <% end %> <% end # sanpi_narabi %> <%####%> <% if %w(両方 横).include? sanpi_narabi %> <% @syuukei.base_titles.size.times do |bas| %> <% next unless( base==@syuukei.base_titles[bas] || base == "両方") %> <p> <b><%=h @syuukei.base_titles[bas] %>ベース(賛否横並び)</b> </p> <table> <tr bgcolor="#<%= ((line_color_sw ^= true) ? 'f8b0f8' : 'e0f8f8') %>" > <th>項目</th> <%## 項目 合計(出欠) 賛成 反対 棄権 未集計 ##%> <% @syuukei.sanpi_titles.each_with_index do |title,san| %> <% next if skip_san(san,saiketu) %> <th><%= title %></th> <% end %> </tr> <%## 項目 現実出席(無記名) 現実出席(記名) 書面出席 代理出席 合計(無記名) 合計(記名) 欠席 総数(無記名) 総数(記名) ##%> <% @syuukei.syukketu_titles.size.times do |syu| %> <% next if skip_syu(syu,kimei,bosuu) %> <tr bgcolor="#<%= ((line_color_sw ^= true) ? 'f8b0f8' : 'e0f8f8') %>" > <th><%= syu_title(syu) %></th> <% @syuukei.sanpi_titles.size.times do |san| %> <% next if skip_san(san,saiketu) %> <td><%= content(syu,san,bas,f,2) %></td> ← ★ <% end %> </tr> <% end # @syuukei.syukketu_titles.size.times do |syu| %> </table> <% end # @syuukei.sanpi_titles.each do |title| %> <% end # sanpi_narabi %> <% unless (kimei == "記名") %> <%= f.submit "無記名投票を確定" %> <% end # %> <% end # form %>