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

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

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

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

JavaScript

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

Q&A

1回答

624閲覧

addEventListenerがnullになる

robben

総合スコア12

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

JavaScript

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

0グッド

0クリップ

投稿2020/03/24 13:12

どっどインストールのレッスンを模写しております。ストップウォッチを作りたいです。
まず、startをクリックしたら....のイベントリスターがnullになります。
どっどインストールのソースコードをそのまま貼り付けてもnullになり、ボタンを押しても動きません。
どなたか助けていただきたいです。


私のコード

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>Stopwatch</title> <script> 'use strict'; var timer = document.getElementById('timer'); var start = document.getElementById('start'); var stop = document.getElementById('stop'); var reset = document.getElementById('reset');

var startTime;

function countUp() {
var d = new Date(Date.now() - startTime);
var m = String(d.getMinutes()).padStart(2, '0');
var s = String(d.getSeconds()).padStart(2, '0');
var ms = String(d.getMilliseconds()).padStart(3, '0');
timer.textContent = ${m}:${s}.${ms};

setTimeout(() => { countUp(); }, 10);

}

start.addEventListener('click', () => {
startTime = Date.now();
countUp();
});
</script>

</head> <body> <div id="timer">00:00.000</div> <button id="start">Start</button> <button id="stop">Stop</button> <button id="reset">Reset</button> </body> </html>

試したこと、
addEventListenerの上に、window.onload=()=>
を付けましたが、変わりませんでした。

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

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

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

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

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

m.ts10806

2020/03/24 13:19

コードはマークダウンのcode機能を利用してご提示ください。 また、質問は編集できますので、新たに投稿しなおす必要はありません。 片方削除依頼を出しておいてください
m.ts10806

2020/03/24 13:25

ドットインストールやったことないのですけど、 読み込みと実行順、DOM構築の仕組みを全く触れないんでしょうか。 いずれにしても・・・ 要素が出現してない状態でgetしようとしても存在しないのは一般的に考えて当然ですよね。
guest

回答1

0

ドットインストールの JavaScriptでストップウォッチを作ろう (全12回) ってやつですね。最初の 3 回は無料なので見てみましたが、index.html と js/main.js を別々のファイルに書くことになってるようです。

実際には一つのファイルにまとめて書くこともできますが、重要なのは <script> タグの位置です。質問文のように <head></head> の中に <script> タグを書くと、そのスクリプトは <body> が読み込まれる前に実行されてしまい、<body> の中にある <div id="timer">00:00.000</div> などはまだ存在しないので、document.getElementById('timer') などが nullになってしまいます。

動画では第 1 回の中で「ボディの閉じタグの直前に」と言ってる(特に理由は説明してませんが)ように、<script></body> の直前に書くといいでしょう。

html

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <title>Stopwatch</title> 6</head> 7<body> 8 <div id="timer">00:00.000</div> 9 <button id="start">Start</button> 10 <button id="stop">Stop</button> 11 <button id="reset">Reset</button> 12 13 <script> 14'use strict'; 15var timer = document.getElementById('timer'); 16// 以下略 17 </script> 18</body> 19</html>

投稿2020/03/25 08:43

hoshi-takanori

総合スコア7901

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問