質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

7987閲覧

即時関数の戻り値をHTMLの属性 "value" に設置する方法についてです。

marshmallowy

総合スコア204

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/03/03 05:16

###前提・実現したいこと
即時関数が返す戻り値をHTMLのvalue属性に設定したいです。

以上、ご確認の程、よろしくお願い申し上げます。

###発生している問題・エラーメッセージ
コーンソールにエラーは出力されてまん。

###該当のソースコード

html

1<form name="formName"> 2 <label for="payment_confirm">支払確定日 </label> 3 <div class="input-box"> 4 <!-- 即時関数が返す戻り値を value="" に設定をしたいです。 --> 5 <input type="date" name="payment_confirm" value="" step="1" title="支払確定日"> 6 </div> 7</form>

js

1var today = (function (){ 2 'use strict'; 3 var todayObject = new Date(); 4 return todayObject.getFullYear()+ '/' + todayObject.getMonth()+1 + '/' + todayObject.getDate(); 5})(); 6document.forms['formName'].elements['payment_confirm'].value = today;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

えっと、どういう問題が出ているのでしょうか。

まず、HTMLに書かれるvalue属性は初期値専用なので、JavaScriptから書き換える必要も、意義もありません。value=で代入すれば、その値が表示されます。

あと、odayObject.getMonth()+1の周囲には括弧が必要です(カッコがないと、左から計算が進んで、「文字列として1を連結」という意味になってしまいます)。

投稿2017/03/03 05:19

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

marshmallowy

2017/03/03 05:37 編集

お世話になります。 < どういう問題が出ているのでしょうか。 失礼しました。 即時関数が実行された際に、戻り値を today に代入して、document.forms['formName'].elements['payment_confirm'].value に today を代入したのですが、value属性に値が書き込まれませんでした。 < まず、HTMLに書かれるvalue属性は初期値専用なので、JavaScriptから書き換える必要も、意義もありません。value=で代入すれば、その値が表示されます。 document.forms['formName'].elements['payment_confirm'].value = today; ではなく、value=today;に書き換えればよかったでしょうか? < あと、odayObject.getMonth()+1の周囲には括弧が必要です(カッコがないと、左から計算が進んで、「文字列として1を連結」という意味になってしまいます)。 かしこまりました。 以上、ご確認の程、よろしくお願い申し上げます。
marshmallowy

2017/03/03 05:59

ご教授頂きありがとうござます。 また、スクリプトに頼らず直接、手でHTMLの value属性に 2017/3/3 と入力したところ、表示されませんでした。 そこで、ゼロ 0 が抜けてるから問題なのかと思い、HTMLの value属性に 2017/03/03 と入力したところ、表示されました。 仕様があるみたいですね。
guest

0

type="date"type="text" に変更してみたら?
使っているブラウザーによっては type="date" には Date() しか入れないと思います。

投稿2017/03/03 05:43

Everatch

総合スコア241

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

marshmallowy

2017/03/03 05:50

< type="date" を type="text" に変更してみたら? < 使っているブラウザーによっては type="date" には Date() しか入れないと思います。 ありがとうござます。 それなら、問題なく出力されるのですが..... できるだけ、初期値もしくは、日付を選択するだけにさせたいところです。 以上、ご確認の程、よろしくお願い申し上げます。
Everatch

2017/03/03 05:53

上でも書いた通り、 ブラウザによって type="date" には Date() しか入れないので、 即時関数やめて下記にすれば入ると思います。 var today = new Date();
Everatch

2017/03/03 05:53

(そもそもこれにしか使わないのであればわざわざ変数を定義する必要もないですよね)
marshmallowy

2017/03/03 05:59

ご教授頂きありがとうござます。 また、スクリプトに頼らず直接、手でHTMLの value属性に 2017/3/3 と入力したところ、表示されませんでした。 そこで、ゼロ 0 が抜けてるから問題なのかと思い、HTMLの value属性に 2017/03/03 と入力したところ、表示されました。 仕様があるみたいですね。
Everatch

2017/03/03 06:08

おっしゃる通りです 余談ですが、type="text" 以外はブラウザごとに仕様が異なるので、HTMLの value属性に手入力するのは極めて危険です、各ブラウザで定めている型で代入するようにしましょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問