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

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

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

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

解決済

テキストボックスに整数をいれたときにボックスの上に出てくる「購入個数が0です。」の文字を表記しないようにしたい。

MUSUBINON
MUSUBINON

総合スコア9

JavaScript

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

1回答

0評価

0クリップ

105閲覧

投稿2022/09/23 14:20

編集2022/09/23 23:50

独学で勉強中の初心者です。
JavaScriptで注文フォームを作っています。
クリック以外のイベントを利用するというコードを練習しています。

実現したいこと

1以上の数字を入力したときに出てくる「購入個数が0です。」の文字を消したいです。

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

  • 1以上の数字を入力したときにしたに「購入個数が0です。」と表記されます。

本来0以下の入力時に右側に赤色背景のテキストボックスで表示されるようにコードを入力したのですが、1以上をいれると、違う場所に「購入個数が0です。」と表示されてしまいます。
エラーメッセージ
コンソールでのエラーメッセージはありませんでした。

該当のソースコード

コード <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>10日で覚えるJavaScript</title> <style> table{border: solid 1px orange; border-spacing: 0px;} th,td{border: solid 1px orange; padding: 4px;} .outer{width: 328px; text-align: center;} .prod_list{text-align: center;} ul{list-style-type: none; background: gold; padding: 4px;} li{text-align: left;} [type = "button"],[type = "submit"]{margin: 16px;} #basket{width: 300px; margin: auto;} .empty_basket{border: dotted 6px darkcyan; background: black; padding: 8px;} .filled_basket{border: dotted 6px green; background: yellow; padding: 8px;} .groupbox{position: relative;} .desc_show{font-size:12px; background: cyan; padding: 4px; position:absolute; left: 330px; top:220px; width:120px;} .desc_hide{display: none;} .alert_show{font-size: 12px; background: red; color: white; padding: 4px; position: absolute; left:330px; top:200px; width: 120px;} .desc_hide{display: none;} </style> <script> window.addEventListener('load', //ページロード時の処理 function (event){ var elem = document.getElementById('btn_addprod'); elem.addEventListener('click', addProduct, false); elem = document.getElementById('txt_amount'); elem.addEventListener('focus', amount_gotFocus, false); elem.addEventListener('blur', amount_lostFocus, false); elem.addEventListener('keyup',amount_keyup, false); } ,false); //btn_addprodクリック時の処理 function addProduct(event){ var basket = document.getElementById('basket'); basket.className = 'filled_basket'; //選択されたオプションを取得 var product = ' '; var options = document.getElementsByName('products'); for(var i=0; i< options.length; i++){ if(options[i].checked){ product = options[i].value; break; } } //個数を取得 var tbox = document.getElementById('txt_amount'); var amount = tbox.value; //値を設定 basket.innerHTML += '<p>' + product + ' ' + amount + '個</p>'; } //フォーカス取得時のメッセージ表示 function amount_gotFocus(event){ var desc = document.getElementById('desc_amount'); desc.className = 'desc_show'; } function amount_lostFocus(event){ var desc = document.getElementById('desc_amount'); desc.className = 'desc_hide'; } //入力チェック function amount_keyup(event){ var amount = event.currentTarget.value; var alert = document.getElementById('alert_amount'); if(amount >0){ alert.className = 'alert_hide'; }else{ alert.className = 'alert_show'; } } </script> </head> <body> <h1>商品購入フォーム</h1> <div class="outer"> <form> <ul class="prod_list"> <li><input type="radio" name="products" value="none" checked>なし</li> <li><input type="radio" name="products" value="リラックスチェア" >リラックスチェア</li> <li><input type="radio" name="products" value="リラックスデスク" >リラックスデスク</li> <li><input type="radio" name="products" value="ブックスタンド" >ブックスタンド</li> </ul> <input type="text" id="txt_amount" value="0">個 <input type="button" id="btn_addprod" value="▼add"> <div id="desc_amount" class="desc_hide"> 購入個数を入力してください(1以上)。</div> <div id="alert_amount" class="alert_hide"> 購入個数が0個です。</div> <div id="basket" class="empty_basket"> </div> <input type="submit" value="購入"> </form> <div> </body> </html>```

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

JavaScript

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