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

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

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

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

JavaScript

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

Q&A

解決済

1回答

722閲覧

JSのdocument.writeがブラウザ上に表示されない...

GYMON

総合スコア4

HTML5

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

JavaScript

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

0グッド

2クリップ

投稿2022/09/22 11:07

前提

気温を表示させるプログラムを書いています.

「const fetchUrls =...」内のdocument.writeは正常にブラウザ上に表示されるのですが, その{}以外のdocument.writeがなぜかブラウザ上に表示されませんでした.

また, htmlでは最終的に変数atを使って, <h1><script src="pra.js">document.write("いまの体感温度は"+at+"だよ")</script></h1> を使いたいのですが, 同様の理由かうまく表示されません. よくわかっておりませんが, 実行すると一瞬だけちらっとdocument.writeの内容が見えました.

実現したいこと

・「const fetchUrls =...」内外でのdocumnt.writeの使用
<h1><script src="pra.js">document.write("いまの体感温度は"+at+"だよ")</script></h1>の使用

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

エラーメッセージはありませんでした.

### 該当のソースコード 【HTML】 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <link rel="stylesheet" href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" integrity="sha512-xodZBNTC5n17Xt2atTPuE1HxjVMSvLVW9ocqUKLsCC5CXdbqCmblAshOMAS6/keqq/sMZMZ19scR4PsZChSR7A==" crossorigin="" /> <script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js" integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA==" crossorigin=""></script> <script src='https://unpkg.com/@turf/turf@6/turf.min.js'></script> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <script src="pra.js"></script> <script src="pra.js">document.write("いまの体感温度は"+at+"だよ")</script> </body> </html> 【JavaScript】 var date = new Date(); const alltime = date.getFullYear() + ('0' + (date.getMonth() + 1)).slice(-2) +('0' + date.getDate()).slice(-2) + ('0' + date.getHours()).slice(-2) + 0+0+0+0 async function fetchURLs(urls) { try { const fetchUrls = urls.map(url => fetch(url).then(res => res.json())) const [todo1] = await Promise.all(fetchUrls) const k = todo1["11001"].temp[0] const s = todo1["11001"].humidity[0] const v = todo1["11001"].wind[0] const a = 1.76 + 1.4*v**0.75 const t = 37 - (37 - k)/(0.68 - 0.0014*s + a**-1) - 0.29*k*(1- s/100) const at = Math.round(t*10)/10 ; document.write("気温:"+k+"℃" + "<br>\n" ) document.write("湿度:"+s+"%" + "<br>\n" ) document.write("風速:"+v+"m/s" + "<br>\n" ) document.write("体感温度:"+at+"℃" + "<br>\n" ) console.log(v) } catch (error) { console.error(error) } } fetchURLs(['https://www.jma.go.jp/bosai/amedas/data/map/' + alltime + '.json']) ```ここに言語名を入力 html, JavaScript

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

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

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

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

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

guest

回答1

0

ベストアンサー

fetchで非同期通信を行うような現代JavaScriptと、HTML生成と同期的に動作して、そこに割り込むようなdocument.writeは、全くマッチしません(まともに動作しません)。

実現したいこと

document.writeを使ったまま両者の出力を共存させることは不可能です。

document.writeは投げ捨てて、innerHTMLなどほかのDOM的手段でHTMLを書き出してください。

投稿2022/09/22 12:53

編集2022/09/23 00:15
maisumakun

総合スコア145183

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問