アプリ版:「スタンプのみでお礼する」機能のリリースについて

javaScript初心者です。よろしくお願いします。


<body>
<input type="text" name="ji" />時
<script language="javascript">
hizuke = new Date();
ji.value = hizuke.getHours();
</script>

書籍を元にhtmlファイルに上記のスクリプトをかきました。上記スクリプトで現在が12時であれば 12時 と表示されると説明されているのですが上手く行きません。<inputの枠と 時 は表示されるのですが、<input>枠内には何も表示されない状態です。

上記のjavaScript内に、document.write(hizuke); を付け足して見たところ日時は表示されず、ji.value = hizuke.getHours();を削除するとdocument.write(hizuke); は表示されました。

短いコードですが何度も見返してみたのですが、どこに問題があるか分かりません。
<input>枠内にjavaScriptで取得した時間を表示するのに上記コードでの問題解決の方法やアドバイスをいただきたく思います。
よろしくお願いします。

A 回答 (3件)

質問文のコードですが、InternetExplorerだと動くのではないでしょうか?


私のPCで確認してみると、Firefox3では動きませんがInternetExplorer7では動きます。

しかし、InternetExplorerでは動くけどFirefoxでは動かないようなコードは書くべきではありませんので、
何の断りもなくこのようなコードを載せているのであれば今お使いの本はやめておいた方が良いかもしれませんね。

ただ、このコードが「とりあえず何か書いてみよう」的な感じで載せられているだけで、
注意書きでこのコードはInternetExplorerでしか動きませんと書いてあったり、
後から詳しい説明が書いてあったりするかもしれませんので一概には言えませんが…。

JavaScriptの標準に準拠することを基本とするならば、質問文のコードは基本的には間違いです。
    • good
    • 0

もしかして、ブラウザのセキュリティレベルが高すぎるか、Scriptの実行の


問い合わせに、「いいえ」と応答しているのではありませんか?
    • good
    • 0

先ず、変数を定義せずに使用しています。


hizuke = new Date();
ji.value = hizuke.getHours();

変数は定義してから使います。
var hizuke;
hizuke = new Date();
でも面倒なので、合成して記述する場合が多いのです。
var hizuke = new Date();

次に、入力タグ(コントロール)は名前で取得して変数に代入します。
var ji = document.getElementsByName("ji");
但し、これはメソッド名が示すようにコレクション(配列)なので、
ji[0].value = hizuke.getHours(); のように添え字を付けてください。
配列が嫌なら、Nameではなく、IDにします。

<input type="text" id="ji" />時
var ji = document.getElementById("ji");
ji.value = hizuke.getHours();
    • good
    • 0
この回答へのお礼

書き込みありがとうございます。

なぜか上手く行かずにいます。
何度かやり直してみてはいるのですが、なぜか上手く行きません。

それから、私が質問文で書いたコードは基本的に間違いなのでしょうか?
もしそうなら、この本で勉強するのは考えものかなと思っているところなのですが、この点についてもよろしければ書き込みをいただけたらと思います。よろしくお願いします。

とりあえず、もう一度順にやってみるつもりですが、お礼が遅くなってしまいそうなので書き込みさせていただきました。

お礼日時:2008/06/08 00:16

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