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

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

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

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

Q&A

解決済

4回答

1026閲覧

returnで答えが表示されません

beginner001

総合スコア29

JavaScript

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

0グッド

0クリップ

投稿2020/01/22 02:01

javascript(A)

<html> <body> <form name = "keisan"> <p>身長(cm):<input type = "text" name="texta"></p> <p>体重(kg):<input type = "text" name="textb"></p> <input type = "button" value="BMIを計算" onclick = "calc()"></p> </form> <script> function calc(){ let h = parseInt(document.keisan.elements[0].value); let w = parseInt(document.keisan.elements[1].value); alert(w / ((h / 100)*(h / 100))); } </script> </body> <html>

javascript(B)

<html> <body> <form name = "js"> <p>身長(cm):<input type = "number" id="height"></p> <p>体重(kg):<input type = "number" id="weight"></p> <input type = "button" value="BMIを計算" onclick = "calc()"></p> </form> <script> function calc(){ let h = Number(document.getElementById("height").value); let w = Number(document.getElementById("weight").value); let answer=(w / ((h / 100)*(h / 100))); return answer; } </script> </body> <html>
Javascript(A)の記述を使ってJavascript(B)のように書き直して実行すると動作しません。どの部分に問題があるのかを知りたいです。 よろしくお願いします。

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

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

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

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

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

kyoya0819

2020/01/22 02:02

質問は編集できますのでMarkDown文法を使ってご質問ください。
miyabi_takatsuk

2020/01/22 02:05

formのnameにjsと入れるのは、JavaScript上の処理に影響を及ぼしかねないので、やめましょう。
m.ts10806

2020/01/22 02:07

動作はしてますよ。どうなったらゴールなのか書いてください。 というかそのゴールが決まってればやることは決まるので質問するまでもなく解決できるはずです。
beginner001

2020/01/22 02:08

miyabi_takatsukさん。分かりました。
m.ts10806

2020/01/22 05:19

質問は編集できますので 回答にとびつくよりも優先的に指摘にそって質問内容調整いただけたらと。
beginner001

2020/01/22 22:49

説明不足ですみませんでした。「身長」「体重」を入力した後、「BMIを計算」のボタンをクリックしたときにalertではなく、「BMIを計算」のボタンの下に値を表示させたいのです。 <html> <body> <form name = "js"> <p>身長(cm):<input type = "number" id="height"></p> <p>体重(kg):<input type = "number" id="weight"></p> <input type = "button" value="BMIを計算" onclick = "calc()"></p> </form> <script> function calc(){ let h = Number(document.getElementById("height").value); let w = Number(document.getElementById("weight").value); let answer=(w / ((h / 100)*(h / 100))); return answer; } </script> </body> <html>
kyoya0819

2020/01/22 22:50

解答編集しました。
m.ts10806

2020/01/22 23:10

質問は編集できますので 回答にとびつくよりも優先的に指摘にそって質問内容調整いただけたらと。
guest

回答4

0

ベストアンサー

returnするのはいいですが、returnしたものをどうするか書いていません。

returnを使いたいなら以下の通り

HTML

1 2<form name = "js"> 3<p>身長(cm):<input type = "number" id="height"></p> 4<p>体重(kg):<input type = "number" id="weight"></p> 5<input type = "button" value="BMIを計算" onclick = "bmi()"></p> 6</form> 7<div id=output></div>

js

1function bmi(){ 2 output.innerHTML = calc(); 3} 4 5function calc(){ 6let h = Number(document.getElementById("height").value); 7let w = Number(document.getElementById("weight").value); 8let answer=(w / ((h / 100)*(h / 100))); 9return answer; 10} 11

投稿2020/01/22 02:05

編集2020/01/22 22:52
kyoya0819

総合スコア10429

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

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

Zuishin

2020/01/22 02:26

return する利点が無いというところに低評価しました。calc という名前の関数に alert を入れるのは気持ち悪いです。calc は計算結果を return してほしいですね。その方がテストも容易になります。
kyoya0819

2020/01/22 02:29

HTMLの修正をしなくて良いのでそのように回答しましたが、確かにその通りです。修正しました。 return部分も修正しました。
Zuishin

2020/01/22 02:44

calculation と calc が併用されていて calculation に alert が入っているのも少し引っかかりますが、低評価を外しました。
beginner001

2020/01/23 21:59

asuchi0819さん、ありがとうございました。 こんな風にすればできるのだと思いました。勉強になりました。
guest

0

html

1<input type = "button" value="BMIを計算" onclick = "if(n=calc()) alert(n)"></p>

投稿2020/01/22 02:25

yambejp

総合スコア114821

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

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

m.ts10806

2020/01/22 04:02

その手があったか…!
miyabi_takatsuk

2020/01/22 05:03

一番さっくりしてる気がします。
guest

0

そりゃ出ないよ

ボタン押下時の処理でcalc呼ぶとこまではOKですが
calcの戻り値に答えを返して終わってますよね。
ボタンがその後何するわけでも無いので終わりです。

質問者さんがダイアログ出したいなら、returnではなく
alertで出力して下さい。

投稿2020/01/22 02:10

NEO_PLANETT-777

総合スコア333

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

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

0

calcが値を返してるだけだからです。
Aの記述は、alertで値をアラートで表示してますが、
Bの記述は、値を返してるだけで、その先の処理はなんもしてません。
"表示"がどこに表示することを意図したことかわかりませんが、
alertや、console.logとか使えばどこかしろに表示はされます。

投稿2020/01/22 02:09

miyabi_takatsuk

総合スコア9528

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問