- ベストアンサー
HTMLを使ってinnnerHTMLで自動生成された表を出力したい
- ラジオボタンを選択し、ボタンを押すと価格表が再計算されます。
- 選択したボタンによって、料金の再計算を行いますが、表に値が反映されていません。
- 再計算ボタンを押すと、表そのものを出力させるために、手直ししなければなりません。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 もし自分が作るならこう作るかな?とちょっと書き換えてみました。 動きは追ってみてください。 <!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"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>innnerHTMLで自動生成された表を出力したい</title> <script type="text/javascript"> //ラジオボタンのvalue値を取得 var daysRate; var nouki = document.getElementsByName('nouki'); var price = new Array ( 100, 300, 500, 800 ); function getRate() { for ( var i = 0; i < nouki.length; i ++ ) { if ( nouki[i].checked ) { daysRate = nouki[i].value; } } return parseFloat(daysRate); } function calc() { // 選択されているレートを取得 var rate = getRate(); var table_start = "<table border='1'><tbody><tr>"; var table_end = "</tr></tbody></table>" var table_td = ''; // priceが増えてもロジックをいじる必要がないようにprice.lengthでループ数を制御 for ( var i = 0; i < price.length; i ++ ) { table_td += '<td width="50">' + parseInt(price[i]) * rate + '</td>'; } document.getElementById('priceTableOutput').innerHTML = table_start + table_td + table_end; } window.onload = function() { // 読込み後も一度テーブル表示を実行する calc(); }; </script> </head> <body> 再計算ボタンを押すと価格表が再計算されます。<br /> <input type="radio" name="nouki" value="1" checked="checked" />通常配達 <input type="radio" name="nouki" value="1.25" />翌日配達 <input type="radio" name="nouki" value="1.5" />当日配達 <input type="button" value="再計算" onClick="calc()"> <div id="priceTableOutput" style="background:#ccc;">innerHTMLで、ここに表を出力</div> <br /> </body> </html>
お礼
LancerVIIさんおはようございます。 お早い回答どうもありがとうございます! 自分のソースを見ると、noukiはlengthで取得しているのにテーブルのループ回数はベタ打ちだったり TABLEの開始タグと終了タグは変数で出力させているのに中身は直で出力させていたり、 ものすごく雑なものでした。 LancerVIIさんが手直しを加えてくださったプログラムは、とてもまとまった作りですごく勉強になります。 TDの部分を変数にする発想がなかったので、innerHTMLで出力する手段もDIVを3つ用意しなければいけないものかと勘違いもしていたので、もう少し柔軟な発想が出来るように勉強させていただきます。 この度は手助けしていただけて、とても感謝しています。