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

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

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

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

解決済

javascriptとbodyの順を逆にしたら動かなくなった。

R.lawliet
R.lawliet

総合スコア41

JavaScript

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

6回答

0リアクション

0クリップ

2429閲覧

投稿2015/05/27 08:18

編集2015/05/27 09:00

作成したプルダウンメニューについての評価を頂いた際に、
ヘッダの中にscriptを書いたほうが良いと言われたので移植してみたのですが、
なぜか動かなくなりました。

とても慎重に行ったのでコピペ漏れがあるとかは無いと思います。
out.printを用いて上から見ていったところ、★の箇所で止まっている様でした。

これはコピペ移植する前の状態の時に、
サンプルソースから引っ張ってきた時からくっついていたもので、
正直存在意義が分からなかったので消そうとしたらエラーが発生するので
見てみぬフリをしてやり過ごそうとした所でした。

質問の要点は2つです。
なぜscriptの位置を動かしただけでエラーが発生したのか。

このエラーが出ている★箇所は本来どういう目的で作用していて、
どう対応すれば本来の動きに戻るか、です。

どうかよろしくお願いします。

↓動いていた時のコード

lang

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>情報入力画面</title> <meta http-equiv="Content-Script-Type" content="text/javascript"> </head> <body bgcolor = "#bce2e8"> <form name="registration" method="post" action="" onSubmit="return check()"> <hr width="100%" size="4"> <font size="7" color="#0000ff"><div align=center>情報入力画面</div></font> <hr width="100%" size="4"> <table width="400px" height="60%" border="0" align="center" valign ="middle"> <tbody> <tr> <td valign ="middle"> <div>生年月日<select name="selectYear" id="selectYear" onchange="setSelectMonth()"> </select>年<select name="selectMonth" id="selectMonth" onchange="setSelectDate()"> </select>月<select name="selectDate" id="selectDate"> </select>日</div> <div align="center"><input type="submit" value="登録"</input></div> </td> </tr> </tbody> </table> <hr width="100%" size="4"> </form> <script type="text/javascript">//属性 <!-- /*=========[ 生年月日 : プルダウン選択 ]=========*/ var Now = new Date(); var NowYear = Now.getFullYear(); /*[ オプションを更新(年) ]*/ function setSelectYear(){ for(var y=NowYear-40; y<NowYear-17; y++){ //selectボックスIDからElementの取得 var selectElement = document.getElementById("selectYear"); //<option>要素を追加 var option = document.createElement("option"); //optionのvalue属性を設定 option.value = y; //リストに表示するテキストの設定 option.text = y; //セレクトボックスにオプションを追加 selectElement.appendChild(option); } setSelectMonth(); } setSelectYear();//★★★存在意義がわからなかった★★★ /*[ オプションを更新(月) ]*/ function setSelectMonth(){ var selectElement = document.getElementById("selectMonth"); var child; //セレクトボックスの子要素を取得しつつループ while(child = selectElement.firstChild){ //セレクトボックスから子要素を削除 selectElement.removeChild(child); } for(var m=1; m<=12; m++){ var option = document.createElement("option"); option.value = m; option.text = m; selectElement.appendChild(option); } setSelectDate(); } /*[ オプションを更新(日) ]*/ function setSelectDate(){ //選択された年を取得 var Year = document.registration.selectYear.options[ document.registration.selectYear.selectedIndex].value; //選択された月を取得 var Month = document.registration.selectMonth.options[ document.registration.selectMonth.selectedIndex].value; //うるう年に対応出来る月の最終日を取得 var lastDate = new Date(Year,Month,0).getDate(); var selectElement = document.getElementById("selectDate"); var child; while(child = selectElement.firstChild){ selectElement.removeChild(child); } for(var d=1; d<=lastDate; d++){ var option = document.createElement("option"); option.value = d; option.text = d; selectElement.appendChild(option); } } // --> </script> </body> </html>

↓移植して動かなくなったコード

lang

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>情報入力画面</title> <meta http-equiv="Content-Script-Type" content="text/javascript"> <script type="text/javascript">//属性 <!-- /*=========[ 生年月日 : プルダウン選択 ]=========*/ var Now = new Date(); var NowYear = Now.getFullYear(); /*[ オプションを更新(年) ]*/ setSelectYear(); function setSelectYear(){ for(var y = NowYear-40; y <= NowYear-17; y++){ //selectボックスIDからElementの取得 var selectElement = document.getElementById("selectYear"); //<option>要素を追加 var option = document.createElement("option"); //optionのvalue属性を設定 option.value = y; //リストに表示するテキストの設定 option.text = y; //セレクトボックスにオプションを追加 selectElement.appendChild(option); } setSelectMonth(); } setSelectYear();//★★★ここで止まる★★★ /*[ オプションを更新(月) ]*/ function setSelectMonth(){ var selectElement = document.getElementById("selectMonth"); var child; //セレクトボックスの子要素を取得しつつループ while(child = selectElement.firstChild){ //セレクトボックスから子要素を削除 selectElement.removeChild(child); } for(var m = 1; m <= 12; m++){ var option = document.createElement("option"); option.value = m; option.text = m; selectElement.appendChild(option); } setSelectDate(); } /*[ オプションを更新(日) ]*/ function setSelectDate(){ //選択された年を取得 var Year = document.registration.selectYear.options[ document.registration.selectYear.selectedIndex].value; //選択された月を取得 var Month = document.registration.selectMonth.options[ document.registration.selectMonth.selectedIndex].value; //うるう年に対応出来る月の最終日を取得 var lastDate = new Date(Year,Month,0).getDate(); var selectElement = document.getElementById("selectDate"); var child; while(child = selectElement.firstChild){ selectElement.removeChild(child); } for(var d = 1; d <= lastDate; d++){ var option = document.createElement("option"); option.value = d; option.text = d; selectElement.appendChild(option); } } // --> </script> </head> <body bgcolor = "#bce2e8"> <form name="registration" method="post" action="" onSubmit="return check()"> <hr width="100%" size="4"> <font size="7" color="#0000ff"><div align=center>情報入力画面</div></font> <hr width="100%" size="4"> <table width="400px" height="60%" border="0" align="center" valign ="middle"> <tbody> <tr> <td valign ="middle"> <div>生年月日<select name="selectYear" id="selectYear" onchange="setSelectMonth()"> </select>年<select name="selectMonth" id="selectMonth" onchange="setSelectDate()"> </select>月<select name="selectDate" id="selectDate"> </select>日</div> <div align="center"><input type="submit" value="登録"</input></div> </td> </tr> </tbody> </table> </form> </body> </html>

修正を行いました。
ここで止まるっていう箇所の内容がselectMonthになっていましたが、
selectYearの移し間違いです。

質問している問題点とは別の単なる質問するときに間違えたミスです。
回答者様が困らない様以後気をつけます(汗)

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

JavaScript

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