前提・実現したいこと
JavaScriptで、2つの数値を入力して和差積商の結果を出すプログラムを作っています。
積と商の結果は普通に出るのですが、和と差だけ以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
NaN(学校のサイト内でのアラートで表示されます)
該当のソースコード
alert(`和${a+b}差${a-b}`);
試したこと
括弧を変えてみたり、$を+に変えてみたりした
補足情報(FW/ツールのバージョンなど)
和と差の結果だけでない理由が知りたいです。
学校の課題で取り組んでおります。
###コード全体
<html> <body> <script>var a=parseInt(prompt("1つ目の数を入力せよ"));
var b=parseInt(prompt("2つ目の数を入力せよ"));
alert(和${a+b}:差${a-b});
alert(積${a*b}:商${a/b});
if (window.confirm('データを送信しますか?')) {
return true; //OKボタン
} else {
return false; //キャンセルボタン
}
}
// -->
</script>
数字を全角で入力している、ということはありませんか?
aとbを定義している構文含めた、コード全体を記載してください。
NaNエラーは、対象の変数が"数値ではない"ということを示すものです。
なので、aないしbが数値を格納できていない可能性があります。
コード全体を追記しました。
質問文のコードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。
kei344さんの修正依頼と併せて、もう一つ確認です。
実際に表示されたアラートには、なんと表示されていますか?
---- 下記は、kei344さんの修正依頼にて解決すると判断できるので無視して大丈夫です ----
また、下のコード内では、バッククォートがついておらず、
テンプレートリテラルになっていませんが、
実構文では、バッククォートついていますか??
というのも、バッククォートがしっかりとついている状態の構文では、問題なく動くので(Google Chromeで検証)構文での間違いがあるとするなら、そこしか浮かびません。
> miyabi_takatsukさん
> 下のコード内では、バッククォートがついておらず、テンプレートリテラルになっていません
たぶん、markdownのいたずらかと。
> user001さん
追記拝読。やはり、入力値異常としか思えないです。
miyabi_takatsukさん
実際に表示した際も「NaN」と表示されます。
Lhankor_Mhyさん>
ですね、コメントした後で気づきました。
user001さん>
なんどもすみません。
アラートは4回出てくると思いますが、
どのタイミングで、どうNaNとでますか?
後半の二回ですか?
また、質問の構文では、”NaN”とだけ出ることはありえません。
”和NaN:差NaN”とは出る可能性があります。
miyabi_takatsukさん
プログラミングの課題でJavaScriptを入力して出力するサイトを使っています。
アラートは2回に分けて作っており、NaNとだけ表示されるのは前半の方です。(和と差)後半の積と商の部分は普通に算出されます。
例:a[10]b[5]なら前半[NaN]後半[積50,商2]
> user001さん
そのコードでそんなアラートの出力はありえないと思いますが……
なんだか、全てのコメントを無視されているのでちょっと不愉快。
なにか癇に障ることを書いたかな?まあいいや。
user001さん>
サイトを使っているのなら、その情報は、問題解決する上で、かなり重要です。
なんのサイトを使っているのか、そのサイト名、URLを質問本文に記載してください。
なぜなら、ブラウザの仕様とは大きく違う可能性があるからです。
現在の質問本文からは、ブラウザでそう表示されるとしか捉えられません。
情報認識の相違があっては、問題解決なんてしようがありませんし、的を射た回答なんて絶対得られません。
Lhankor_Mhyさん
すみません。そんなつもりではなかったのですが…
> user001さん
そうでしたか、失礼しました。
気分を害されているのかと思っていましたのでほっとしました。
繰り返しになりますが、そのコードからはその出力はありえないと思います。
ご提示いただいていない部分に原因があるのだと思います。
返信が遅れてしまいすみません。
ブラウザはWindows10(自宅のパソコン)で、サイトの方は学校のホームページ(生徒のみ入れるサイト)ですので教えることができません。学校のパソコンのブラウザはGoogle Chromeです。
ふむ・・・。
そのサイトが何ものかわからない以上、正確な回答にならないと思いますが、回答させていただきます。
また、学校のサイトを使っていて、そのサイトで表示されるアラートにて出てくるとも質問本文に記載ください。
質問本文は修正できます。
また、コードがまだしっかりマークダウン方式で記載仕切っていないので、
PCで閲覧されているなら、プレビューを見ながら、質問文を修正しましょう。
多分、この質問に貼られたコードと学校のコードが異なっていますから、このコードをもとに頭をひねっても答えが出ないのではないかと思います。
該当するページを Chrome で開き、F12 を押して Sources タブを開き、Ctrl+P を押すとソースを見ることができます。それをそのまま質問にコピペする方が解決が早いと思います。
ソースコードに個人情報が入っていてその部分だけ伏せたいのですが、それではだめでしょうか?
いいと思いますよ。
ただ、プログラムに影響が出ないようにしてください。
コードを貼り付ける時には、
```JavaScript
コード
```
のように、```JavaScript と ``` の間に入れてください。
改行も忘れずに。
この記号は <code> ボタンを押すと出てきます。
載せましたがこれで大丈夫でしょうか?
```JavaScript は ``html の間違いです。
```html
<html>
</html>
```
のように、一部だけではなく全体を囲ってください。
というかこれは、元々の質問のものと全然違いますね。
それと
> ※以下の欄にHTMLを入力してください。JavaScript以外の言語で記述されている場合,またインターネット上に公開されているプログラムをコピーしている場合,内容を問わず再提出となります。
と書いてあります。
ネット上に公開されているプログラムをコピーするなということは、人に聞いてもいけないということです。
すみません。自分の力不足が故に聞いてしまったのですが、人に聞いても行けなかったのですね。これからは気をつけます。
Zuishinさん、大変にありがとうございます。
質問者さん、課題は、あらゆる面、問題発生時の解決も全て含めて"課題"なので、今回の場合は特に人に聞いてはいけなかったようですね。
また、元のソースコードも違ったようですし・・・。
一つまた可能性になってしまいますが、
課題提出のtextarea内に、エスケープされてわかりづらいですが、
<html>が含まれているようです。純粋にJavaScriptのみを記載する課題なのかな?と推察されます。
課題文もかなりわかりずらい面もあるようですね・・・。
HTMLを記載しろと言っているのに、JavaScript以外だと再提出だという矛盾は、課題文自体に問題があるように思います。(HTMLってJavaScriptじゃないし)
課題だって面と、課題文の意味合いの確認も含め、
学校側に問い合わせすべきでしょう。
回答3件
あなたの回答
tips
プレビュー