@kazufex

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

【計算結果が表示されません!】

【助けてください!】
計算機が作れません。

WordPressでサイトを作成を始めました。
サイト制作を始めたばかりでHTMLなどの知識は全くない状況です。
「1日に必要な最低エネルギー量」をページ内で計算できるよう、計算機を作りたいと考えています。
チャットGPTで質問しながらコードを作りましたが、計算結果が表示されなくてどうしたら良いのか分からず困っています。
分かる方がいらっしゃいましたら、計算結果が表示されない原因と改善点を教えていただけますと助かります。よろしくお願い致します。

作りたい計算機の情報源(日本医師会)
https://www.med.or.jp/forest/health/eat/01.html
チャットGPTに聞いて作成されたコード

  <label>性別:
    <select id="gender">
      <option value="male">男性</option>
      <option value="female">女性</option>
    </select>
  </label><br>

  <label>年齢層:
    <select id="ageGroup">
      <option value="1-2">1〜2歳</option>
      <option value="3-5">3〜5歳</option>
      <option value="6-7">6〜7歳</option>
      <option value="8-9">8〜9歳</option>
      <option value="10-11">10〜11歳</option>
      <option value="12-14">12〜14歳</option>
      <option value="15-17">15〜17歳</option>
      <option value="18-29">18〜29歳</option>
      <option value="30-49">30〜49歳</option>
      <option value="50-64">50〜64歳</option>
      <option value="65-74">65〜74歳</option>
      <option value="75+">75歳以上</option>
    </select>
  </label><br>

  <label>身体活動レベル:
    <select id="activityLevel">
      <option value="1">レベル1(低い)</option>
      <option value="2">レベル2(普通)</option>
      <option value="3">レベル3(高い)</option>
    </select>
  </label><br><br>

  <button onclick="calculateEnergy()">計算する</button>
  <p id="result"></p>
</div>

<script>
const bmrTable = {
  "1-2": { male: 700, female: 660 },
  "3-5": { male: 900, female: 840 },
  "6-7": { male: 980, female: 920 },
  "8-9": { male: 1140, female: 1050 },
  "10-11": { male: 1330, female: 1260 },
  "12-14": { male: 1520, female: 1410 },
  "15-17": { male: 1610, female: 1310 },
  "18-29": { male: 1490, female: 1130 },
  "30-49": { male: 1570, female: 1170 },
  "50-64": { male: 1510, female: 1120 },
  "65-74": { male: 1390, female: 1090 },
  "75+": { male: 1310, female: 1020 }
};

const activityTable = {
  "1-2": { "2": 1.35 },
  "3-5": { "2": 1.45 },
  "6-7": { "1": 1.35, "2": 1.55, "3": 1.75 },
  "8-9": { "1": 1.40, "2": 1.60, "3": 1.80 },
  "10-11": { "1": 1.45, "2": 1.65, "3": 1.85 },
  "12-14": { "1": 1.50, "2": 1.70, "3": 1.90 },
  "15-17": { "1": 1.55, "2": 1.75, "3": 1.95 },
  "18-29": { "1": 1.50, "2": 1.75, "3": 2.00 },
  "30-49": { "1": 1.50, "2": 1.75, "3": 2.00 },
  "50-64": { "1": 1.50, "2": 1.75, "3": 2.00 },
  "65-74": { "1": 1.50, "2": 1.70, "3": 1.90 },
  "75+": { "1": 1.40, "2": 1.70 }
};

function calculateEnergy() {
  const gender = document.getElementById("gender").value;
  const ageGroup = document.getElementById("ageGroup").value;
  const activityLevel = document.getElementById("activityLevel").value;

  const bmr = bmrTable[ageGroup][gender];
  const activity = activityTable[ageGroup][activityLevel];

  const resultElem = document.getElementById("result");

  if (!activity) {
    resultElem.innerText = "この年齢層では選択された身体活動レベルは利用できません。";
    return;
  }

  const estimatedEnergy = bmr * activity;
  resultElem.innerText = `1日に必要な推定エネルギー量は約 ${estimatedEnergy.toFixed(0)} kcal です。`;
}
</script>
0 likes

4Answer

制限を超えていないはずだとは思うのですが、
回答が途中で見切れてしまう為、
コードブロックを使用しての回答をします。

この表記がコードブロックです。
※思ったより長文になってしまいました。
 
ChatGPTは便利ですが、あくまで前提知識があるうえでの
補助的な存在だと個人的に考えています。といった前提で回答します。
 
この状態は正直言って「丸投げ」なので、
必要最低限ご自身で学習する必要があります。
(何か書籍を読んだり「知識がちょっとでもある」状況になる必要があります)
 
前述を踏まえて申し上げたいことが4点あります。
 
(1)現状のコードについて何が分かっていて、何が分からない状況ですか。
 
(2) 基礎が分かっていないと話が通じない可能性があります。
  ・「35行目でdivタグを閉じているが開始の記述がどこにもない」と
    話して伝わるのか回答者側は分からない。
  ・<script>タグ云々がそもそも伝わるか分からない。

(3) 上記(2)に付随して、現時点のコードについてインデントが整っていません。
  ・端的に伝えると「インデント」は「字下げ」のことです。
    Word等で作成する文書を例にすると
    「ある区切り(章)等で頭が揃っているか」ということになります。
    (「字下げ」はプログラミングにおいて可読性以上に重要な意味を持ちます)
    ※言語によっては「字下げ」自体が処理に影響を及ぼします
 
(4) 今後の展望についてどうなさるつもりでしょうか。
    ここで一時的に回答を得られたとして今後のメンテナンスはどうなさるつもりなのでしょうか。
  ・「こうすれば動くよ」と回答をベタ張りされたとして
  「とりあえず動くようになった」として新たな問題が発生したら
    どうするつもりなのでしょうか。
3Like

Comments

  1. @kazufex

    Questioner

    ご連絡ありがとうございます!
    @syutorum001さんのおっしゃる通りです。丸投げしてしまい申し訳ありません。
    ①コードは正しく配置、改行しなければ壊れてしまう。<>の中に単語+/などで配置しないと指示として区切れない。位しか理解していないです。
    単語の意味はわからないものを調べたりchatGPTで質問して意味を理解するようにしています。
    コードのどこで改行しなければならないのか、正しく動作するために必要な構成について分からないです。
    ②divの開始は1番上の「label:性別の」1番上にありました。貼り付けた時に抜けてしまったと思われます。ごめんなさい。
    scriptタグは現状理解できていません。調べます。
    ③インデントの整え方も調べれば自分で解決できますでしょうか、、、?
    ④メンテナンスの部分は何も考えておりませんでした、、、。教えていただいたことを反映して動くようになれば良いと考えておりました。
    新しい問題が発生したら、また質問を投稿していた可能性はあります、、、。

  2. ①について、「分からない時に調べる・理解しようと努める」
    大変素晴らしい姿勢だと思います。継続すれば必ずご自身の力になります。

    コードのどこで改行しなければならないのか、正しく動作するために必要な構成について分からないです。

    こちらはやはり「全体像(基礎)を知る」という部分が
    不足していることが要因かと思われます。
    ですので、1冊本を買ってみて読んでみる、
    逆引き辞典として使えるように手元に残しておく、等
    試してみる価値はあるかと思います。

    ②について、状況分かりました。

    ③について、理解する必要もありますが、
    例えばVisual Studio Codeのような
    コードエディターを使用して整形する、という手法もあります。

    ④について、「分からない・調べる・試してみる・上手くいかない」といった
    状況に陥った際、「自分はどこまで理解していて、何が分からないのか」を
    整理・言語化できるように訓練していけば
    「丸投げ」ではなく「質問」に変わっていくので
    快く協力してくださる方も増えるかと思います。

  3. @kazufex

    Questioner

    ありがとうございます!
    これを機に自分で勉強して知識を深めようと思います。
    色々と教えてくださり助かりました。

スクリプトは画像じゃなくて、テキストで貼った方が、適切な回答を得られると思います。
質問部分を再編集で修正してもらうと良いかと思います。

1Like

Comments

  1. @kazufex

    Questioner

    ご連絡ありがとうございます!
    コードをテキストで貼り、修正しました。
    表示がコードではないですが、このままでよろしいのでしょうか、、、?

チャットGPTで質問しながらコードを作りましたが、計算結果が表示されなくてどうしたら良いのか分からず困っています。
分かる方がいらっしゃいましたら、計算機が機能しない原因と改善点を教えていただけますと助かります。よろしくお願い致します。

肝心のコードが提示されていないですよ・・・

1Like

Comments

  1. @kazufex

    Questioner

    ご連絡ありがとうございます!
    ご指摘ありがとうございます。ヘルプで調べて修正してみました。この表示のされ方でよろしいでしょうか?

  2. 提示されたデータをHTMLに保存してブラウザで表示してボタンをクリックすると「この年齢層では選択された身体活動レベルは利用できません。」と表示されましたが、これは正しい挙動ですか?
    スクリーンショット 2025-04-15 234953.png

    「計算機が動きません!」「計算結果が表示されなくて」「計算機が機能しない」と3つの表現をされていますが実際にはどうなっているのでしょうか?ボタンをクリックしても何も起きない、ということでしょうか?それとも誤った計算結果が表示されたのでしょうか?それとも何かしらエラーが発生したのでしょうか?

    問題が発生しているのはWordPress環境のみでしょうか?ローカルでもでしょうか?こちらの環境ではローカルでは動作しているようなのでWordPress側が原因かもしれません。
    スクリーンショット 2025-04-15 235055.png

  3. @kazufex

    Questioner

    正確に意図をお伝えできず申し訳ありません。実際に試していただきありがとうございます。
    もしかして現状のコードでも正しく動作しているのでしょうか、、、?
    ①1枚目の画像について
    はい。その表示で合っていると思います。1〜2歳は身体活動レベルが「2」のみ数値があるので、「1」と「3」を選んだらエラーメッセジが表示されるよう動けば問題ないと考えられます。
    ②3つの表現について
    お伝えしたかったことは、WordPressで作成したサイトに投稿したコードを貼り付けて実際に動くのか試したときに、計算結果が表示されない状況であります。
    ③問題が発生している部分について
    WordPressのみでしか試していないので、ローカルでは行なっておりません。「ローカルで試す」というのは、PCのどこかで正しく動作するか試すことができる場所があるということでしょうか?もしよろしければ、試す方法を教えていただけますと助かります。

  4. 作成したHTMLファイル(デスクトップ等に保存したファイル)をブラウザで開けば良いです。

  5. @kazufex

    Questioner

    ありがとうございます!
    自分で試した結果、計算機は問題なく作動していました。
    wordpressで何か問題が生じているのでしょうか...。

  6. WordPressでは直接<script>タグを用いて記述するのは推奨されていないようです。正確な情報は公式ドキュメントをご確認ください。
    WordPressの作法が関係しているのかコードの問題かは質問の状況からは分かりません。コードの問題であればブラウザの開発者ツールに何かエラーが出ていませんか?

コードの方には問題なさそうに見えるので、WordPressの使い方がおかしいんじゃないですかね?
下記2点について説明することはできますか?

  • WordPressの管理画面上でどのようにこのコードを貼り付けているのか
  • 貼り付けたページを表示したらどのような表示になっているのか
1Like

Comments

  1. @kazufex

    Questioner

    ご連絡ありがとうございます!!
    WordPressの管理画面上でどのようにこのコードを貼り付けているのか
    スクリーンショット 2025-04-20 222010.png

    【投稿】から作成したページに写真のようにコードを貼り付けております。

    貼り付けたページを表示したらどのような表示になっているのか
    スクリーンショット 2025-04-20 222426.png

    写真のような表示になります。性別、年齢、身体活動レベルは問題なく選択できますが、「計算する」のボタンをクリックしても計算結果は表示されません。※まだこのページは投稿していません。プレビューから実際に動くのかテストしている状況です。

  2. 「貼り付けたページの表示を見せて」と言われて「ビジュアルエディタの表示」を出してくるということは、おそらくプレビュー機能を使ってないんじゃないですかね?
    ビジュアルエディタはあくまで見た目の編集をするための画面で、そこでは多分scriptタグの中身は動かないと思いますよ。
    公開前でもプレビュー機能は使えるはずですので、そちらで確認してみてください。

  3. @kazufex

    Questioner

    使っていませんでした、、、。
    image.png
    こちらのことで合っていますでしょうか?
    image.png
    プレビューをクリックして「計算する」をクリックした後のページです。クリックをすると対象の年齢にあてはまる身体活動レベルでもエラー文が表示されています。

  4. エラー文が表示されたということはちゃんとscriptが動いているわけですから、あとはconsole.logを使うなり、HTML上の表示なりで下記のような内容を確認してみるなりして色々試すといいと思います。

    • ageGroup,gender,activityLevelの各値がどうなっているか
    • activityTableのkeyを決め打ちした場合にどうなるか

Your answer might help someone💌