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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

266閲覧

JavaScriptでチェックした値で繰り返しの結果を変えたい

kazumi_7

総合スコア21

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/10/29 13:03

やりたい事

HTMLに入れたチェックボックスの内容で、JavaScriptの結果を変えたいです。

チェックボックスは「件数を表示する」で、望む結果は
・チェックあり:No.XX(何件目)+前半部分+後半部分
・チェックなし:前半部分+後半部分(冒頭に件数が入らない)
です。

#試したコード

JavaScript

1 var s = document.getElementById("ch").checked;

これだとfalseしか表示されず、falsefalse...と結果が繰り返し回数分続いてから、前半部分+後半部分の表示となってしまいました。
あといくつか試したのですが、コードを上書きしているため、何が悪かったのかも分かりません……。

#コード
if文以外は動くことを確認しています。

HTML

1<!DOCTYPE html> 2<html lang="ja"> 3<meta charset="utf-8" /> 4<head> <title>ランダム文章</title></head> 5<body> 6 ページ更新毎に十件ずつ、体言止めのよく分からない文が生成されます。 7 <script type="text/javascript" src="reload.js"></script> 8 <input type="button" value="更新" onclick="koshin()">← ボタンクリックで内容が変わります。 9 10<form data-persist="garlic" class="form1" > 11 <input type="checkbox" class="ch" /> 12 <label for="num">件数を表示する</label> 13</form> 14<hr> 15<script type="text/javascript" src="plus.js"></script> 16 17<script src="jquery-3.5.1.min.js"></script> 18<script src="garlic.js"></script> 19</body></html>

JavaScriptはplus.jsのみ。
ランダムのif文の中身は省略しています。

JavaScript

1var h=''; 2var result=" " 3 4for (var i = 0; i < 10; i++) { 5 6//回数入れたい 7 8if (ch==true) { 9 h ="No."+ parseInt(i+1) +" "; 10} 11 12 13result=result+h; 14 15//前半ここから下 16var max = 2; 17var rtn = Math.ceil(Math.random() * max); 18 19if(rtn ==1) h='ありのままの'; 20else if(rtn ==2) h='上下する'; 21 22//前半終了 23 24result=result+h; 25 26//ここから後半 27 28var max = 2; 29var rtn = Math.ceil(Math.random() * max); 30 31if(rtn ==1) h='化けの皮<br>'; 32else if(rtn ==2) h='マーメイド<br>'; 33result=result+h; 34} 35 36document.write( result ); 37

よろしくお願いいたします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

  • イベントを勉強しましょう。
  • getElementByIdが何をするものなのかを勉強しましょう。

多分入門書を買って体系的に勉強することが必要な段階です。

【イベントの紹介 - ウェブ開発を学ぶ | MDN】
https://developer.mozilla.org/ja/docs/Learn/JavaScript/Building_blocks/Events

【Document.getElementById() - Web API | MDN】
https://developer.mozilla.org/ja/docs/Web/API/Document/getElementById

あと、document.writeを使わない要素の書き換え方を覚えましょう。20年以上前の書き方です。

投稿2020/10/30 04:56

kei344

総合スコア69400

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

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

kazumi_7

2020/11/13 13:05

遅くなってすみません。 ご明察の通り、本当に勉強を始めたとも言い難いレベルです。 イベントとgetElementByIdでチェックボックスの値が取れるようですね。 まだリンク先の説明を読んでもさっぱり理解できなかったので、ネットのつまみ食いではなく、ちゃんと入門書から読んでみます。 document.writeは古いんですね……。 色々調べたところ、insertAdjacentHTMLが良さそうだったので変更しました。 ありがとうございます。
guest

0

ご自身でご提示されているcheckedの値で、回数表示追加判定のif処理を行ってください。

投稿2020/10/30 02:58

YT0014

総合スコア1708

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

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

kazumi_7

2020/11/13 13:06

そのcheckedのクリック回数が取れません……。 でもそんな考え方もあるんですね。勉強になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問