いつもお世話になっています。
タイトルの通り、innnerHTMLを使って自動生成された表を
指定されたDIVに表示させたいと考えています。
自分が形にしたい動作は
1.ラジオボタンを選択し、ボタンを押す
2.priceCalc関数内でラジオボタンのvalue値を取得
3.選択したボタンによって、料金の再計算を行う
といった流れです。
現在はラジオボタンに応じたvalue値の取得はできている状態ですが、
表にvalue値が反映していないため、それぞれ単独で動いてしまっています。
再計算ボタンを押したときにボタンと表が連動し、
value値ではなく、表そのものをpriceTableOutputに出力させる作りにするためには
どのように手直ししたら良いでしょうか?
皆さんの知恵をお借りしたいです。
よろしくお願いします。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<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 = 1;
var nouki = document.getElementsByName("nouki");
function priceCalc(){
for(i=0; i<nouki.length; i++){
if(nouki[i].checked){
daysRate = nouki[i].value;
}
}
document.getElementById("priceTableOutput").innerHTML = daysRate;
}
</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="priceCalc()">
<div id="priceTableOutput" style="background:#ccc;">innerHTMLで、ここに表を出力</div>
<br />
<script>
var price = new Array(100,300,500);
var table_start = "<table border='1'><tbody><tr>";
var table_end = "</tr></tbody></table>"
document.write(table_start);
for(var i=0; i<=2; i++){
document.write("<td width='50'>" + parseInt(price[i]) * parseFloat(daysRate) + "</td>");
}
document.write(table_end);
</script>
</body>
</html>
No.1ベストアンサー
- 回答日時:
こんにちは。
もし自分が作るならこう作るかな?とちょっと書き換えてみました。
動きは追ってみてください。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<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つ用意しなければいけないものかと勘違いもしていたので、もう少し柔軟な発想が出来るように勉強させていただきます。
この度は手助けしていただけて、とても感謝しています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字数を数える際に空白、改行...
-
formで項目を連結したい
-
クリックしたラジオボタンの行...
-
チェックボックス付きのテーブ...
-
ボタンを押してテキストボック...
-
入力チェックの外部スクリプト...
-
JavaScriptの「.querySelectorA...
-
テーブル内のチェックボックス...
-
2つのjavascriptを1つにするには
-
ラジオボタンを一括で操作する...
-
ラジオボタンとテキストボック...
-
ラジオボタンが選択されたらテ...
-
複数のselect値で1つも選択され...
-
javascriptで入力フォームが空...
-
return trueとreturn falseの用...
-
データベースの値を判断してラ...
-
onchangeイベントを強制的に発...
-
UWSCのIE操作でプルダウンを選...
-
Selectの中身をfor文で入れる
-
特定<table>内の<td>の色を変える
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JavaScriptの「.querySelectorA...
-
チェックボックス付きのテーブ...
-
複数のselect値で1つも選択され...
-
ラジオボタンが選択されたらテ...
-
入力チェックの外部スクリプト...
-
Javascriptの電卓で最初の何も...
-
文字数を数える際に空白、改行...
-
画面の2重起動をチェックする...
-
画面表示とともにtableの指定の...
-
jQueryで合計を出したい
-
localStorageでのcheckbox制御
-
JavaScriptによる自動計算フォーム
-
同一nameの input type="text"...
-
テーブル内のチェックボックス...
-
formで項目を連結したい
-
クリックしたラジオボタンの行...
-
Javascriptで自動計算の合計の...
-
テーブル内のチェックボックス...
-
ボタン押下すると一行テキスト...
-
JavaScriptで、コピーボタンを...
おすすめ情報