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

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

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

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

Q&A

解決済

2回答

384閲覧

フォームに入力した値をvalueに入れて読み込みたい

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

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

0グッド

0クリップ

投稿2021/03/12 09:26

前提・実現したいこと

先日ほぼ同じコードで別の質問をさせていただいた者です。

フォームに入力された値を取得しなおして、ランダムに生成された数値と比較して正解・不正解を返すプログラムを作っているのですが、これだと「$ is not defined」とエラーが出ます

それから、
if(onload.num == judge.textbox) {
answerJ.innerHTML = "正解!";
} else if (onload.num > judge.textbox) {
answerJ.innerHTML = "もっと小さな数です";
} else {
answerJ.innerHTML = "もっと大きな数です";
}

のところを通過する際にも正しいジャッジを返してくれません

調べまくっていろいろ試してみましたが(document.forms...など)、もうどうすればいいかわかりません…どなたか説明をお願いいたします

該当のソースコード

HTML

1<!DOCTYPE html> 2<html lang="ja"> 3 4<head> 5 <meta charset="utf-8"> 6 <meta name="viewport" content="width=device-width"> 7 <title>数当てゲーム</title> 8 <meta name="viewport" content="width=device-width, initial-scale=1"> 9 <script src="numcrunchingg.js"></script> 10</head> 11<body> 12 13<center> 14<h2 class="h2-a">数当てゲーム</h2> 15 <p>1から100までの数字を当てるシンプルなゲームです。<br> 16 ※半角数字で入力してください。</p> 17 18 <section class="numcrunchingg"> 19 <input type="number" name="randomNumberN" id="randomNumberI" size="4" value="0"> 20 <input type="button" id="checkbutton" value="当ててみる" onclick="judge();"> 21 <section id="output"></section> 22 </section> 23 24 25</center> 26 27</body> 28 29</html> 30

JavaScript

1// 数当てゲーム 2window.onload = function onload(){ 3let min = 1; 4let max = 100; 5let num; 6 7num = Math.floor(Math.random() * (max + 1 - min)) +min; 8 9console.log(num); 10 11var textbox = document.getElementById('randomNumberI').value; 12// console.log(randomNumberI.value); 13 14} 15 16function judge() { 17 $('randomNumberI').val(document.getElementById('randomNumberI')); // ←ここをどうすればいいか? 18 var answer = textbox; 19 20 let flag = 0; 21 if(isNaN(randomNumberI.value)){ 22 flag = 1; 23 } 24 25 if(flag){ 26 window.alert("数字を半角で入力してください。"); 27 } else { 28 29 var answerJ = document.getElementById("output") 30 31 if(onload.num == judge.textbox) { 32 answerJ.innerHTML = "正解!"; 33 } else if (onload.num > judge.textbox) { 34 answerJ.innerHTML = "もっと小さな数です"; 35 } else { 36 answerJ.innerHTML = "もっと大きな数です"; 37 } 38 } 39 } 40

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

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

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

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

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

guest

回答2

0

ベストアンサー

これだと「$ is not defined」とエラーが出ます

jQueryの$ですが、初心者にjQueryはお勧めしたくないので、その行はぜんぶ消してしまいましょう。


js

1 if(onload.num == judge.textbox) { 2 answerJ.innerHTML = "正解!"; 3 } else if (onload.num > judge.textbox) {

関数内のローカル変数をこのような形で参照することはできません。

まず、num はグローバルにしてしまいましょう。

js

1let num = Math.floor(...); 2window.onload = function() {

その上で、ジャッジ部分は以下のようにします。

js

1 let inputNumber = document.getElementById('randomNumberI').valueAsNumber; 2 if (num == inputNumber) { 3 answerJ.innerHTML = "正解!"; 4 } else if (num > inputNumber) {

投稿2021/03/12 09:48

int32_t

総合スコア20884

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

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

m.ts10806

2021/03/12 10:07

確かに、半端に混ぜるくらいなら「使わない」ほうがいいですね。
退会済みユーザー

退会済みユーザー

2021/03/12 11:11

わかりやすい解説をありがとうございます! (あと、else if のところの不等号が間違っていたので自分で直しました)
guest

0

$ is not defined

jQueryのセレクタ取得の記法($(selector))を使っていながらjQuery本体を読み込んでないからです。

jQuery使うにしても使わないにしても「セレクタの指定方法」は確実におさえてください。
jQueryのセレクタ解説
【CSS・JavaScript】HTMLで要素を指定するためのセレクタの書き方まとめ

投稿2021/03/12 09:29

編集2021/03/12 09:31
m.ts10806

総合スコア80850

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問