for (i = 0; i <= 10; i++){ でやってみた!

件の時間計算スクリプトですが、公休を使って(!)またまた調整を試みました。
HTML上の入力フォーム一行につき一つの処理手順、というスクリプトで組んでしまったわけですが、処理手順自体は各行とも同じなので(参照する値の場所が違うだけ)、タイトルにあるとおり、一つの処理手順を2行目、3行目・・・と繰り返していくようにfor文で組み立ててみました。

結果的には成功したのですが、うまく行かなかったことも。
それは、各行の計算結果を最後に合計する処理。
イメージとしては、配列を作成し、各行毎の処理手順内でこの配列に計算結果を格納させ、最後に配列内にあるすべての値を合計する(これはこのforの外で別に行う)、という具合だったのですが・・・。

var hairetsu = newArray(10);
for (var i = 0; i <=10; i++){
各行の計算処理手順
hairetsu[i] = 計算結果
}
var goukei = 0;
for (var j = 0; j <=10; j++){
goukei = goukei + hairetsu[j];
}

みたいな感じで最後に合計を出して、それをHTML内のフォームに代入する、という手順を考えたのですが、これは結果的にうまくいきませんでした。
うまく行かなかったのは、上の段。
配列を宣言すると、その後のfor文以降が実行されなくなってしまうのです。
したがってそのfor文で配列に計算結果を代入することもできませんでした。

仕方がないので合計を求める部分は別にfor文を組み直して(配列は使わずに)対応しました。
少しイメージとは異なってしまいましたが、一番最初に書き上げたスクリプトよりははるかに見やすくなった(というか行数が少なくなった)と思います。

もっとうまいやり方や綺麗なやり方はあるのでしょうけれども、今のところ僕にはこれが精一杯かな~。
ま、これからもちょくちょく継続して変更を加えて行こうと思っています。

時間計算の基本構造はそれでも完成した(と思う)ので、これをベースに今度は距離計算のスクリプトを組んで、相互にリンクをはらなくちゃ。

boota

いろんなモノに、いろんな意味で、ヲタ。なのかも?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)