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

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

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

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

Q&A

解決済

3回答

2137閲覧

JSでoptionを作成し、7日後から表示させる

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

0グッド

0クリップ

投稿2017/06/21 03:19

###前提・実現したいこと
JSで予約フォームに使うセレクトボックスを作成しています。
翌日からの表示までは出来ました。
これを7日後からの表示にしたいです。

###発生している問題・エラーメッセージ
①7日後からの表示にできない。
②window.onload=function()だと、動作しない。なのでonmouseover="create();"
にしたら、セレクトボックスをクリックする度にoption が作成されてしまう。
ご教授をお願いいたします。

###該当のソースコード
<select id="selectbox" onmouseover="create();">

<option value="">予約日を選択してください</option> </select> <script> function create() { var selectElement = document.getElementById("selectbox"); var today = new Date(); var loop = 40; var year, month, day, yobi_num, yobi, ans; for(var i =0 ;i<loop;i++){ year = today.getFullYear(); month = today.getMonth()+1; day = today.getDate(); yobi_num = today.getDay(); yobi = new Array("日","月","火","水","木","金","土"); ans = year +"/" + month + "/" + day + "(" + yobi[yobi_num] +")"; // console.log(ans); today.setDate(day + 1); var element = document.createElement("option"); element.innerText = ans; element.value = ans; selectElement.appendChild(element); } }; </script>

###試したこと
window.onload=function()だと、動作しない

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

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

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

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

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

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

mattn

2017/06/21 03:26

window.onload が正攻法(といってもonloadもあまり良いとは言えませんが)です。どう動かなかったか示して下さい。またその時のコードも載せて下さい。
guest

回答3

0

ベストアンサー

①7日後からの表示にできない。

「var today = new Date();」の次の行で

javascript

1today.setDate(today.getDate() + 7);

とするのではだめですか?

②window.onload=function()だと、動作しない。

ドキュメント構造を読み込み終わってない段階だと「getElementById」が動作しません。
bodyタグを閉じる直前とか、bodyタグを閉じた後とかに書いてみると動きが変わりませんか?

投稿2017/06/21 03:38

tkturbo

総合スコア5572

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

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

退会済みユーザー

退会済みユーザー

2017/06/21 03:59

bodyタグを閉じた後に書いたら動作しました。 7日後からの表示も出来ました。 本当にありがとうございました。
x_x

2017/06/22 02:34

え、ちょっと待ってください。htmlの直下、つまり次のように書いたということですか? ここには書けませんよ? </body><script>...</script></html>
guest

0

■7日後から
forの前に以下1行挿入
today.setDate(today.getDate() + 7);//7日後

■window.onload=function()だと、動作しない
試してみましたが、問題なく動作しました。
window.onload = function(){
//この中に処理
};

以下、動作デモURL
https://jsfiddle.net/monagano/L51zva0f/2/

投稿2017/06/21 03:31

monagano

総合スコア246

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

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

0

予約というくらいですからサーバー側にプログラムが走っているのですよね?
であればサーバー側でコントロールすればよろしいのではないでしょうか?
もしクライアント側の時計を当てにしているのでしたら
必ずしも正しい日時が設定されているわけではありませんので

投稿2017/06/21 03:28

yambejp

総合スコア114839

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問