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

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

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

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

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

4回答

1383閲覧

javascriptでストップウォッチを作っててTypeError: timer is nullが表示される

puroguraminng

総合スコア21

HTML5

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

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2018/03/30 08:37

ドットインストールを一部参考にjavascriptでストップウォッチを作っているのですが、下のコードでTypeError: timer is nullというエラーが発生します。

html・javascript

1<!DOCTYPE html> 2<html lang="ja"> 3 4<head> 5 <meta charset="utf-8"> 6 <link rel="stylesheet" href="styles.css"> 7 <title>StopWatch</title> 8 <script> 9 var timer = document.getElementById('timer'); 10 var c = 0; 11 var elapsedTime = 0; 12 var x = 0; 13 14 function updateTimerText() { 15 var m = Math.floor(elapsedTime / 60000); 16 var s = Math.floor(elapsedTime % 60000 / 1000); 17 var ms = elapsedTime % 1000; 18 timer.textContent = m + ' : ' + s + ' . ' + ms; 19 } 20 21 function countUp() { 22 setTimeout(function () { 23 elapsedTime = Date.now() - startTime; 24 updateTimerText(); 25 countUp(); 26 }, 10); 27 } 28 29 //スタート 30 var startTime; 31 var start = 32 function start(str) { 33 startTime = Date.now(); 34 countUp(); 35 36 } 37 38 //ストップ 39 40 var stop = 41 function stop(str) { 42 43 } 44 45 //リセット 46 var re = 47 function re(str) { 48 } 49 50 </script> 51</head> 52 53<body> 54 <div id="timer">00:00:00</div> 55 <!--スタート--> 56 <form id="Start"> 57 <p> 58 <input type="button" value="スタート" onclick="start('スタート');"> 59 </p> 60 </form> 61 <!--ストップ--> 62 <form id="Stop"> 63 <p> 64 <input type="button" value="ストップ" onclick="stop('ストップ');"> 65 </p> 66 </form> 67 <!--リセット--> 68 <form id="Re"> 69 <p> 70 <input type="button" value="リセット" onclick="re('リセット');"> 71 </p> 72 </form> 73 <script> 74 75 </script> 76</body> 77 78</html> 79

ブラウザはfire fox を使用しています
よろしくお願いします

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

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

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

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

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

guest

回答4

0

ベストアンサー

var timer = document.getElementById('timer');id="timer"の要素より上に書かれているため、JavaScriptを実行した段階ではまだ存在せずエラーとなります。

対策としては、

  • JavaScriptを下に移動する
  • 要素が出揃うDOMContentLoadedを待つ

の2つがあります。

投稿2018/03/30 08:41

maisumakun

総合スコア145183

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

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

puroguraminng

2018/04/01 07:22

ありがとうございます???? 解決しました!
guest

0

もう用意してあるようですが、<script></script>の内容を</body>直前に移動してください。

投稿2018/03/30 08:43

x_x

総合スコア13749

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

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

guest

0

タイプエラーかもしれません。

var timer = document.getElementById('timer'); ではなく、
var timer = document.getElementsById('timer'); です。

投稿2018/03/31 02:05

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2018/03/31 02:12

失礼いたしました! こちらと混同しておりました。 document.getElementsByClassName(element);
guest

0

ちなみに、maisumakunさんの回答にある、

要素が出揃うDOMContentLoadedを待つ

はこう書く。

<script> window.onload=function(){ // ここより下の行に処理を書く。 // ここより上の行に処理を書く。 }; </script>

投稿2018/03/30 08:54

tkturbo

総合スコア5572

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

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

退会済みユーザー

退会済みユーザー

2018/03/31 02:10

厳密には、 window.addEventListener('load', fn, false); onload は HTMLファイルなどの読み込みが完了したら実行です。 window.addEventListener('DOMContentLoaded', fn, false); DOMContentLoaded は 最初のHTMLファイルの読み込みが完了したら実行です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問