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

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

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

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

Q&A

解決済

2回答

1053閲覧

document.getElementByid is not a functionというエラーでタイマーが表示されない

SITUMONNYOU

総合スコア1

JavaScript

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

0グッド

0クリップ

投稿2022/01/22 22:50

編集2022/01/22 23:45

javascriptでカウントダウンタイマーの作り方を解説しているサイトリンク内容https://dev83.com/js-countdown/
で書かれてあるコードをVScode写経しながらjavascriptのカウントダウンタイマーを作成して
Microsoftedgeで開いたらなぜかタイマーが表示されてなく,
Microsoftedgeの開発者ツールを開きバグなどがないか確認したところUncaught TypeError: document.getElementByid is timer.html:25 not a function
at HTMLDocument.<anonymous> (timer.html:25:36)
と出てきてしまい解決方法がわからず困っています
詳しい解決方法教えてくれませんか?
長文失礼しました

html ```<!DOCTYPE html> <html> <body> <div class="timer" id="timer"></div> <style> .timer{ font-weight:bold; font-size :1.6em; color:#222; } </style> <script> document.addEventListener('DOMContentLoaded', function() { var Timer=function(saleStartTime,saleEndtime,endmessage,outputDestination){ this.saleStartTime=saleStartTime; this.saleEndtime=saleEndtime; this.endmessage=endmessage; this.outputDestination=outputDestination; }; Timer.prototype.countDown=function(){} var saleStarttime=new Date(this.saleStartTime); var saleEndtime=new Date(this.saleEndtime); var countDownTime=document.getElementById(this.outputDestination) var endMEssage=this.endMEssage; var currenttimeCD; var currentTime; var untilStartTime; var untilFinishtime; var oneDay=24*60*60*1000; var d=0; var h=0; var m=0; var s=0; function calculateTime(){ currentTimeCD=newDate(); untilStartTime=saleStartTime-currentTimeCD; untilFinishtime=saleEndTime-currentTimeCD; if(currentTimeCD<saleStartTime){ D=Math.floor(untilStartTime/oneDay); h=math.floor((untilStartTime%oneDay)/(60*60*1000)); m=Math.floor((untilStartTime%oneDay)/(60*1000))%60; s=Math.floor((untilStartTime%oneDay)/1000)%60%60; }else{ d=Math.floor(untilFinishtime/oneDay) h=Math.floor((untilfinishTime%oneDay)/(60*60*1000))%60; m=Math.floor((untilFinishTime%oneDay)/(60*1000))%60; s=Math.floor((untilFinishTime%oneDay)/1000)%60%60; } showTime(); } function ShowTime(){ if(currentTimeCD<saleStartTime){ counDownTimer.innerHTML ='開始まで'+d+'日'+h+'時間'+m+分+s+'秒'; }else if(currentTimeCD>=saleStartTime &&currentTimeCD<=saleEndTime){ cuntDownTimer.innerHTML ='あと'+d+'日'+h+'時間'+m+'分'+s+'秒'+'で終了'; }else{ countDownTimer.innerHTML=endMessage; } } setInterval(calculateTime,1000); var myTimer=new Timer('2022/01/23 00:00:00', '2022/1/24 00:00:00', '終了!','timer'); myTimer.countDown(); },false) </script> </body> </html>

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

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

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

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

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

m.ts10806

2022/01/22 23:15

「[急募]初心者で分かりにくかったらすみません 」 をなくせばだいぶ削れますし、エラーメッセージすべてタイトルに載せる必要はないと思います。むしろタイトルで必要な内容がほぼないです。 質問タグに「JavaScript」があるのでタイトルに書く必要がないです。 「document.getElementByid is not a functionというエラーでタイマーが表示されない」のようなタイトルで十分に思います。 それにご自身のコードを提示されないことにいは「エラーの通り」くらいしか言えません。 質問は編集できます。調整してください。 (急募とか不要です。いつ見るとも分からない赤の他人に対しては逆効果です)
SITUMONNYOU

2022/01/22 23:17

わかりました ありがとうございます
m.ts10806

2022/01/22 23:20

それにご自身のコードを提示されないことにいは「エラーの通り」くらいしか言えません。
SITUMONNYOU

2022/01/22 23:23

文章長くて変になりましたけど自分のコード書きました
SITUMONNYOU

2022/01/22 23:25

他に修正が必要なところなどはありますか?
m.ts10806

2022/01/22 23:29

別に長いのも変なのも悪いとは思いません。 ただ、コードブロックにおさまってないので投稿前にプレビュー見ながら調整してもらえたらと。 ```言語名 //ここにコード ``` です。
m.ts10806

2022/01/22 23:31

ただ、参考先がWebサイトでテキストで表示なら「写経」じゃなく 普通にコピペしたほうが間違いがないと思いますけど・・ しかしながら、このコードを何も基礎なしに実現するのは難だと思います。 出ているエラーを調べるくらいは自分で出来た方が良いです。(ドキュメントなども参考にすべきで) https://qiita.com/cannorin/items/eb062aae88bfe2ad6fe5
SITUMONNYOU

2022/01/22 23:34

調べたりはしているんですけど学校から借りているパソコンなので学校関連のサイト以外はほとんどブロックされています(このサイトは使えたけど)
m.ts10806

2022/01/22 23:36 編集

細かいところ申し訳ないですが、コードブロック内には実際のコード以外含めないでもらえると。 1クリックでコピペできるようになるのですけど、実際のコード以外が入っていたらそれぞ除いてから確認する必要があるので、結構手間になるのです(それに他人なのでその文言が実際に入ってるかどうか知らないわけですし、「コードにはないだろうな」という推測にしかならず、実際に入っていたケースが稀ですがあったので)
SITUMONNYOU

2022/01/22 23:40 編集

例えば コード ```とかですか?
guest

回答2

0

ベストアンサー

手入力で持ってきてもコードを理解してないと意味がないと思います。
結局は「参考先との見比べ」になりますし(ある程度文法を加味したうえでの回答はできますが)

ざっと見た感じで「ここだけ直せば動く」というわけではないと思いますが。

① newDate()ではなくnew Date()
②Timer.prototype.countDown=function(){}
これいきなり閉じてしまってることで多くの変数が未定義扱いになっている。
インデントのスペースが狭くて見づらいけど、元のコードだとvar myTimer の前くらいになっているはず。

などなど。(これだけで動くとは限りませんが)

投稿2022/01/22 23:43

編集2022/01/22 23:45
m.ts10806

総合スコア80850

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

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

SITUMONNYOU

2022/01/22 23:50

すみませんわからないのでわからないところ書きますね ①newDate()ではなくnew Date()というところリンク先(?)のところをクリックされたら 学校のパソコンに入っているソフトでブロックされてしまいます ②Timer.prototype.countDown=function(){} これいきなり閉じてしまってることで多くの変数が未定義扱いになっている。 インデントのスペースが狭くて見づらいけど、元のコードだとvar myTimer の前くらいになっているはず。 このコードってどこにありますか?
SITUMONNYOU

2022/01/22 23:52 編集

javascriptわからないので 経験者の人からしたらなんだこれとか思うところあると思います すみません あと語彙力がなかったり
m.ts10806

2022/01/23 03:13 編集

① MDN見れないとしんどいですね。 指摘したいことは newDate() ではなく new Date() です。ご自身のコードではnewDate()という関数を呼び出していますが、 参考先のコードはnew Date()であり、「Dateクラスをnewでインスタンス化する」処理が書かれています。 ② コード内検索してください。 こちらは提示されたコードをコピペして引用しているので コード内検索すれば必ずヒットするはずです。 >javascriptわからないので と言われても回答に書いてあるように「写経するにはある程度基礎知識は必要」なので何もわからない状態で単に写すだけは無意味ということです。 それなら参考先コードがあるならコピペしたほうがまだ確実でしょう。 (目的が「動かすこと」なら。本当にスキルを高めたいならエラーが出た段階で他人に聞くのではなく、エラーを調べて、機能の仕様を確認して1行1行理解していくべきです。他人にこのように書いた意図を説明できるくらいに) ご自身が書かれたコードなので「どこに何を書いたのか分からない」という状況だとさらに意味がないことをやっているということになります。
SITUMONNYOU

2022/01/23 11:16

長い間離席して本当にすみませんでした わかりにくい質問も一つ一つ丁寧に解説していただきありがとうございます 解決策をただ教えるだけじゃなくて自分のためになるようなことを教えてくださりありがとうございます 他の人に聞くんじゃなくて自分で極力やってわからないところは調べたりもしかしたらまたここで質問したりすると思います 本当に細かな指摘ありがとうございました あとはできるだけ自分でやってみたいと思います 問題は解決していないけど感謝としてベストアンサーにさせてもらいます 本当にありがとうございました 長文失礼しました。
guest

0

エラーメッセージのとおり、document.getElementByidは存在しません。

document.getElementByIdIが大文字)としたかったのではないでしょうか?

投稿2022/01/22 22:54

maisumakun

総合スコア145184

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

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

SITUMONNYOU

2022/01/22 22:59

回答ありがとうございます 試してみたところ Uncaught ReferenceError: newDate is not defined at calculateTime (timer.html:38:13) と出てきてしまい解決方法がわかりません
SITUMONNYOU

2022/01/22 22:59

何から何まですみません
y_waiwai

2022/01/23 00:20

スペルミスが解決されたんで、他のエラーが表示されたってことでしょう エラーメッセージを読もう
SITUMONNYOU

2022/01/23 11:17

ご指摘ありがとうございます。 極力自分の力ですることにします ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問