\r\n\r\n\r\n\r\n```\r\n以下のように、\r\n![.textContentが出力されていない画像](2fe18b7dfe445da39ca9d9a3a7fe04c3.png)\r\n```

```に\r\n\r\n\r\ndocument.getElementById('choice').textContent = 'Your number is bigger'\r\ndocument.getElementById('choice').textContent = 'Your number is smaller than the number'\r\ndocument.getElementById('choice').textContent = 'Input number'\r\n```\r\n\r\n上記メッセージが表示されません\r\n\r\n### 補足情報(FW/ツールのバージョンなど)\r\n\r\nVscode\r\nWindows10","answerCount":3,"upvoteCount":0,"datePublished":"2021-03-07T23:15:11.416Z","dateModified":"2022-01-12T10:55:45.698Z","suggestedAnswer":[{"@type":"Answer","text":"ブラウザによるかもしれませんが、`while`ループの間はHTMLのイベントループに戻ることがなくて`textContent`の変更が画面に出ていないのかもしれません。\r\n\r\n`while`ループの内部の最後に`document.getElementById('choice').offsetWidth;`を入れると強制描画されるかもしれません。","dateModified":"2021-03-08T01:54:01.571Z","datePublished":"2021-03-08T01:54:01.571Z","upvoteCount":1,"url":"https://teratail.com/questions/326564#reply-452308","comment":[{"@type":"Comment","text":"勉強になります!","datePublished":"2021-03-08T01:54:58.334Z","dateModified":"2021-03-08T01:54:58.334Z"},{"@type":"Comment","text":"macOSのChromeですが、\r\ndocument.getElementById('choice').textContent = 'Your number is bigger' \r\ndocument.getElementById('choice').textContent = 'Your number is smaller than the number' \r\ndocument.getElementById('choice').textContent = 'Input number'\r\nは描写されません。","datePublished":"2021-03-08T06:43:17.695Z","dateModified":"2021-03-08T06:43:17.695Z"}]},{"@type":"Answer","text":"場合分けをもう少し増やしたほうがよいでしょう\r\n```javascript\r\n

\r\n\r\n\r\n```","dateModified":"2021-03-08T01:38:57.983Z","datePublished":"2021-03-08T01:38:57.983Z","upvoteCount":1,"url":"https://teratail.com/questions/326564#reply-452305","comment":[{"@type":"Comment","text":"ご回答ありがとうございます。\r\n美しいコードを書かれますね!","datePublished":"2021-03-08T01:40:28.321Z","dateModified":"2021-03-08T01:40:28.321Z"}]},{"@type":"Answer","text":"コピペでコード確認した限り、要件通り動いています。\r\n\r\n強いてなら、初回は必ず2回入力する必要があるので、再入力促すときも「ループを抜けない場合」を入れるとか\r\nもしくはWhileの外のプロンプトなしでもいいのでは。","dateModified":"2021-03-07T23:57:16.030Z","datePublished":"2021-03-07T23:31:59.956Z","upvoteCount":0,"url":"https://teratail.com/questions/326564#reply-452286","comment":[{"@type":"Comment","text":"あ、違うか。\r\nちょっと詳細確認","datePublished":"2021-03-07T23:35:15.921Z","dateModified":"2021-03-07T23:35:15.921Z"},{"@type":"Comment","text":"回答書き換え。","datePublished":"2021-03-07T23:52:11.376Z","dateModified":"2021-03-07T23:52:11.376Z"},{"@type":"Comment","text":"ご回答ありがとうございます。私の要件をはっきりするために説明を加えました。アドバイスを頂けると幸いです。","datePublished":"2021-03-08T01:32:38.877Z","dateModified":"2021-03-08T01:32:38.877Z"}]}],"breadcrumb":{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"トップ","url":"https://teratail.com"},{"@type":"ListItem","position":2,"name":"JavaScriptに関する質問","url":"https://teratail.com/tags/JavaScript"},{"@type":"ListItem","position":3,"name":"JavaScript","url":"https://teratail.com/tags/JavaScript"}]}}}
質問するログイン新規登録
JavaScript

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

HTML

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

Q&A

3回答

1382閲覧

document.getElementById('id').textContentが出力されない原因がわからない

kalon

総合スコア198

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2021/03/07 23:15

編集2021/03/08 01:31

0

0

前提・実現したいこと

numberとanswerが一致しない場合に.textContentでanswerが大きすぎるか小さすぎるかを<p id="choice"></p>に出力したいのですが、出力されません。

発生している問題・エラーメッセージ

なし

該当のソースコード

HTML

1<!doctype html> 2<html> 3 4<head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width,initial-scale=1"> 7 <title>テンプレート</title> 8 <link href="./_common/images/favicon.ico" rel="shortcut icon"> 9 <link href="https://fonts.googleapis.com/css?family=M+PLUS+1p:400,500" rel="stylesheet"> 10 <link href="./_common/css/style.css" rel="stylesheet"> 11</head> 12 13<body> 14 <header> 15 <div class="container"> 16 <h1>タイトル</h1> 17 <h2>サブタイトル</h2> 18 </div><!-- /.container --> 19 </header> 20 <main> 21 <div class="container"> 22 <section> 23 <p id="choice"></p> 24 </section> 25 </div><!-- /.container --> 26 </main> 27 <footer> 28 <div class="container"> 29 <p>JavaScript Samples</p> 30 </div><!-- /.container --> 31 </footer> 32 <script> 33 'use strict' 34 const number = Math.floor((Math.random() * 10) + 1) 35 console.log('Number: ' + number) 36 let answer = window.prompt('Input Number') 37 while (parseInt(answer) !== number) { 38 answer = window.prompt('Input Number') 39 console.log('Answer: ' + answer) 40 if (answer > number) { 41 document.getElementById('choice').textContent = 'Your number is bigger than the number' 42 } else if (answer < number) { 43 document.getElementById('choice').textContent = 'Your number is smaller than the number' 44 } else { 45 document.getElementById('choice').textContent = 'Input number' 46 } 47 } 48 document.getElementById('choice').textContent = 'Good!' 49 </script> 50</body> 51 52</html>

以下のように、
.textContentが出力されていない画像
<p id="choice"></p>

document.getElementById('choice').textContent = 'Your number is bigger'
document.getElementById('choice').textContent = 'Your number is smaller than the number'
document.getElementById('choice').textContent = 'Input number'

上記メッセージが表示されません ### 補足情報(FW/ツールのバージョンなど) Vscode Windows10

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

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

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

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

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

m.ts10806

2021/03/07 23:35

何も出力されないですか? それとも他のことが起きてますか? 具体的に現象を記載してください
kalon

2021/03/08 02:23

何も出力されません。上記に情報を掲載したのでご覧に入れていただけたら幸いです。
m.ts10806

2021/03/08 02:33

「何も出力されない」が再現しないので困ってます。 入力してOK押してますよね? 私が回答に書いたとおり、プロンプト2回出るので2回目まで入力しないと何も処理は入りません
m.ts10806

2021/03/08 02:34

いったんCSS外して確認してみては
kalon

2021/03/08 02:35

わかりました。
kalon

2021/03/08 06:43

やってみましたがダメですね。 document.getElementById('choice').textContent = 'Your number is bigger' document.getElementById('choice').textContent = 'Your number is smaller than the number' document.getElementById('choice').textContent = 'Input number' これらがmacOSのChromeで描写されません。
guest

回答3

0

ブラウザによるかもしれませんが、whileループの間はHTMLのイベントループに戻ることがなくてtextContentの変更が画面に出ていないのかもしれません。

whileループの内部の最後にdocument.getElementById('choice').offsetWidth;を入れると強制描画されるかもしれません。

投稿2021/03/08 01:54

int32_t

総合スコア22019

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

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

kalon

2021/03/08 01:54

勉強になります!
kalon

2021/03/08 06:43

macOSのChromeですが、 document.getElementById('choice').textContent = 'Your number is bigger' document.getElementById('choice').textContent = 'Your number is smaller than the number' document.getElementById('choice').textContent = 'Input number' は描写されません。
guest

0

場合分けをもう少し増やしたほうがよいでしょう

javascript

1<p id="choice"></p> 2<script> 3const min=1; 4const max=3; 5const number = Math.floor((Math.random() * max) +min); 6const choice=document.getElementById('choice'); 7let txt; 8let answer; 9let flg=false; 10while (!flg) {; 11 answer = window.prompt('Input Number'); 12 if (answer == null) {; 13 txt='Cancel'; 14 flg=true; 15 }else if (answer=="" || isNaN(answer)) {; 16 txt='Please input Number'; 17 }else if (parseInt(answer) < min) {; 18 txt='Too Small'; 19 }else if (parseInt(answer) > max) {; 20 txt='Too Big'; 21 }else if (parseInt(answer) == number) {; 22 txt='Good'; 23 flg=true; 24 }else if (answer > number) { 25 txt='Your number is bigger than the number'; 26 }else{ 27 txt='Your number is smaller than the number'; 28 } 29 document.getElementById('choice').textContent = txt; 30} 31 32</script> 33

投稿2021/03/08 01:38

yambejp

総合スコア118164

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

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

kalon

2021/03/08 01:40

ご回答ありがとうございます。 美しいコードを書かれますね!
guest

0

コピペでコード確認した限り、要件通り動いています。

強いてなら、初回は必ず2回入力する必要があるので、再入力促すときも「ループを抜けない場合」を入れるとか
もしくはWhileの外のプロンプトなしでもいいのでは。

投稿2021/03/07 23:31

編集2021/03/07 23:57
m.ts10806

総合スコア80890

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

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

m.ts10806

2021/03/07 23:35

あ、違うか。 ちょっと詳細確認
m.ts10806

2021/03/07 23:52

回答書き換え。
kalon

2021/03/08 01:32

ご回答ありがとうございます。私の要件をはっきりするために説明を加えました。アドバイスを頂けると幸いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問