プロが教えるわが家の防犯対策術!

function内での時間計算方法がいまいちうまくいきません。
調べたりして書いたのですがfunctionが呼ばれず処理が働きません
入力した場所からフォーカスが外れたとき呼ぶようにしています
※ onblur = func()
<test.php>
function func(){
$s_time = parseFloat(document.TEST.start_time.value); //入力値Aの時間
$s_minute = parseFloat(document.TEST.start_minute.value); //入力値Aの分
$e_time = parseFloat(document.TEST.end_time.value); //入力値Bの時間
$e_minute = parseFloat(document.TEST.end_minute.value); //入力値Bの分
//共通変数
$base_start = 540;
$base_end = 1080;

$s_t = $s_time * 60;
$s_data = $s_t + $s_minute; //分に変換

$e_t = $e_time * 60;
$e_data = $e_t + $e_minute; //分に変換

--------------------------ここから計算処理
$kekka_start = $s_data - $base_start;
$kekka_end = $base_end - $e_data;
$kekka_data = $kekka_start + $kekka_end;
$kekka_min = $kekka_data / 60; //時間に変換

$kekka_time = explode(".",$kekka_min); //小数点の切り捨て☆

$kekka_times = $kekka_data - ($kekka_time[0] * 60); //--分のデータ作成

$CS = ($kekka_time.":".$chis_times); //表示データの連結☆

document.TEST.kekka.value = CS;
}

☆の部分がうまくいきません。コメントアウトしてexplode前の変数を表示するならばできるのですが
時間の合計を出したいので時間と分を別々に出して連結で表示させたいです。

かなり詰まっています。どうかよろしくお願いします。

A 回答 (3件)

>入力した場所からフォーカスが外れたとき呼ぶようにしています



onblurで呼び出せるのはJavaScriptの関数だけです。phpの関数はブラウザに返しているソースには含まれていませんので、JavaScriptから利用することは出来ません。サーバサイドとクライアントサイドの違いを理解してください。

parseFloatとかあるのでJavaScriptの関数かと思ったのですが、文字列連結などはphpの演算子が混じっているしexplodeはあるし・・・。JavaScriptならJavaScriptで完結させてください。

この回答への補足

回答、誠にありがとうございます。

PHPは初心者で素人なのでJavaScriptのとPHPが混ざっていました・・・

onblurで呼び出せるのはJavaScriptのみでexplodeや
文字連結はPHP記述なのでおかしいということですね。

それらの処理をするならPHP記述ではなくJavaScriptで記述するということでしょうか。

補足日時:2014/08/18 14:51
    • good
    • 0
この回答へのお礼

回答、ありがとうございました。

JavaScriptで文字の切り分け、連結を実装したところ無事うまく動きました。

まだまだ勉強不足でした。ありがとうございました。

お礼日時:2014/08/18 15:29

PHPをクライアントサイドのロジックのように書いてますが、なぜでしょうか?

    • good
    • 0
この回答へのお礼

回答ありがとうございます。

PHPの知識が浅く混ぜ混ぜで書いてしまっていました。

もっと記述を学んでいきます。

ありがとうございました。

お礼日時:2014/08/18 16:35

PHPだと思って読んでしまいました。

これ、JavaScriptなんですね。紛らわしい書き方はしないほうがいいですよ。

$kekka_time = explode(".",$kekka_min);
 ↓
$kekka_time = ("" + $kekka_min).split(".");

としてください。

この回答への補足

回答ありがとうございます。

書き方がわかりにくかったようですみませんでした。

ごちゃ混ぜに書いてしまいました。

補足日時:2014/08/18 15:27
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

お教えいただいた記述ですが私の書き方が悪いか、記述場所が間違っているのかうまく動きませんでした。

Math.floorを使用して動作確認できました。

ありがとうございます。

お礼日時:2014/08/18 16:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!