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

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

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

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

JavaScript

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

HTML

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

Q&A

解決済

2回答

770閲覧

javascript for文で表を出す

t_t_t_t_t_t

総合スコア10

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

JavaScript

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

HTML

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

0グッド

0クリップ

投稿2020/02/13 07:34

編集2020/03/17 14:11

前提・実現したいこと

htmlとjavascriptでクリックされたら100人分の表を作成するプログラムを作成しています
クリックを何回押しても100人分だけ表示したいのですが、分かりません

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

クリックを押すと100人分出ますが、もう一度クリックすると下にもう100人分出てくるので 二度目以降のクリックを無効にするか、二度目以降を削除するかのコードの書き方が分からなく困っています

試したこと

記述最下部にbreakを使うと一人分しか出せないし、return false;をしても同様。if文を組み合わせても何度もクリックできる状態です。disabled属性を使おうと試みましたが動かなくなったりしました。
子要素が1つ上にある場合は追加するような処理をしない方法があれば聞きたいです。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

m.ts10806

2020/02/13 07:38

> <table id="table" type="button" 当該タグにtypeという属性は用意されておりません。 https://developer.mozilla.org/ja/docs/Web/HTML/Element/table が、何を参考にしたのでしょう。 >disabled属性を使おうと試みましたが動かなくなったりしました。 そのコードを提示しましょう。 というか、手法から考えるのではなく、仕様・設計からかためましょう。
yambejp

2020/02/13 07:41

順番に表示するのか、ランダムに表示するのかによって違うでしょう 最初が成功して2回めの追加が気に入らないなら 2回めは最初のデータを消せばいいでしょう
m.ts10806

2020/02/13 22:24

結局どのように解決とされたのでしょうか。
guest

回答2

0

ベストアンサー

簡単にするならフラグの管理(あくまでbooleanの変数)。
クリックイベントの最初でチェックしてreturn。
クリックイベントの最後でtrue/falseを切り替える。

ただ、そもそも「テーブルをクリックする」というのがUX的にどうなのか一考してください。

投稿2020/02/13 07:41

m.ts10806

総合スコア80875

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

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

0

countLimitを定義してif文で回数指定しました。

投稿2020/02/14 01:17

編集2020/02/21 07:41
t_t_t_t_t_t

総合スコア10

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

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

m.ts10806

2020/02/14 01:20

「フラグとは」で調べてきてください。 わざわざbooleanという絶対的なキーワードまで出してますよ。
t_t_t_t_t_t

2020/02/14 01:59

フラグとはオンかオフのどちらかの状態を表す値が入る変数と出てきました。 booleanについての記事をいくつか見ましたが、ここのコードに入れる方法が分かりませんでした。
m.ts10806

2020/02/14 02:30

var countLimit = 0; ↓ var dispflg = false; に変更。 if (countLimit < 100) { ↓ if (!dispflg) { に変更。 countLimit++; を削除。 if (!dispflg) { //中略 } dispflg = true;//追加 ちなみにカウントだけで見たいならnumをグローバルスコープで宣言すればわざわざcountlimitのような変数を別途用意する必要はありません。 まあaddがあればremoveがあるので、フラグやカウントで管理せずとも、要が済んだら単にイベント削除でも良い気もします。 https://developer.mozilla.org/ja/docs/Web/API/EventTarget/removeEventListener
t_t_t_t_t_t

2020/02/14 02:43

ご丁寧にありがとうございます!! うまく動きました。true,falseの使い方次第でそんなことができるということを知り勉強になりました。 教えて頂きありがとうございました。
m.ts10806

2020/02/14 02:52

たぶん今回はremoveしたほうがいいとは思いますけどね。
t_t_t_t_t_t

2020/02/14 03:02

removeも一度試みましたが、良くわかりませんでした。。。
m.ts10806

2020/02/14 03:05

現コードだとcountlimit関連全部取っ払って下記をaddの最後に入れれば良いだけのように思います(未検証) table.removeEventListener("click");
m.ts10806

2020/02/14 03:45

「変わらない」とは。
t_t_t_t_t_t

2020/02/14 03:52

最初のコードの状態と同じでした。 位置が悪いのですかね??
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問