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

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

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

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

987閲覧

if文に入る場合と入らない場合がある(クロームデバッグ中は100%入る)

mcy

総合スコア25

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/06/18 07:47

編集2020/06/18 09:16

下記の処理でクロームのデバッグだとif文に入るのですが、デバッグをしないと入りません。
お分かりになる方よろしくお願いいたします。

【処理概要】
セレクトボックスでに数字を設定しており、選択した数だけDiv要素のコピーを生成する。
2回目以降の選択ではセレクトボックス変更前の値を取得し、前回生成した数を削除してから生成を行う。

【うまくいかないこと】
前回生成したDiv要素削除処理(If文)が走る時と走らない時があります。
クロームのデバッグだと100%走るので原因が分からずにいます。

【教えて欲しいこと】
なぜこのような事象が起きているのかとその対処方法

追加情報が必要でしたらお申し付けください。
よろしくお願いします。

【追記】
HTMLを追記しました。
id:owhAppSctn13内のセレクトボックスで選択した値の数だけid:owhAppSctn14をコピーします。
コピーのidはowhAppSctn15.16.17...と連番になります。

【追記2】
動きを見ているとif文を除去しても削除処理が起きませんでした(デバッグだと起きます)

html

1<div id="owhAppSctn13" class="owhAppPageCon"> 2 <div class="owhAppPageInnrCon"> 3 <div class="owhAppFormItem"> 4 <p class="owhAppFormItemName"> 5 <span class="required"></span>第1セクションのタイトルを入力してください。 6 </p> 7 <div class="owhAppFormInput"> 8 <input type="text" name="name""> 9 </div> 10 </div> 11 <div class="owhAppFormItem"> 12 <p class="owhAppFormItemName"> 13 <span class="required"></span>第1セクションのサブセクション数を選択してください。 14 </p> 15 <div class="sectionSelect subSctn1choice"> 16 <select name="name"> 17 <option hidden>サブセクション数を選択</option> 18 <option value="1">1</option> 19 <option value="2">2</option> 20 <option value="3">3</option> 21 <option value="4">4</option> 22 <option value="5">5</option> 23 <option value="6">6</option> 24 <option value="7">7</option> 25 <option value="8">8</option> 26 <option value="9">9</option> 27 <option value="10">10</option> 28 <option value="11">11</option> 29 <option value="12">12</option> 30 </select> 31 </div> 32 </div> 33 <a href="#" class="fxNxtScButton"> 34 <div class="owhAppStartButton">次へすすむ</div> 35 </a> 36 </div> 37</div> 38 39<!-- コピー元 --> 40<div id="owhAppSctn14" class="owhAppPageCon subSection"> 41 <div class="owhAppPageInnrCon"> 42 <div class="owhAppFormItem"> 43 <p class="owhAppFormItemName"> 44 <span class="required"></span>サブセクション1のタイトルを入力してください。<br> 45 </p> 46 <div class="owhAppFormInput"> 47 <input type="text" name="name"> 48 </div> 49 </div> 50 <div class="owhAppFormItem"> 51 <p class="owhAppFormItemTxtArea"> 52 <span class="required"></span>サブセクション1についての説明文を入力してください。<br> 53 </p> 54 <div class="owhAppFormTextArea"> 55 <textarea name="otoiawase"></textarea> 56 </div> 57 </div> 58 <a href="#" class="fxNxtScButton"> 59 <div class="owhAppStartButton">次へすすむ</div> 60 </a> 61 </div> 62</div> 63

javascript

1 let bfrVal; //前回セレクトで選択した値 2 3 //セレクトボックスフォーカス・変更で発動 4 $('.subSctn1choice select').on('focus', function() { 5 bfrVal = $(this).val(); 6 }).change(function() { 7 let baseObj = $('#owhAppSctn14'); //コピー元のDiv要素 8 createSbSctn($(this), baseObj); 9 }); 10 11 // Div生成処理 12 function createSbSctn(thisObj, baseObj) { 13 //選択したvalue値を変数に格納 14 let sbSctnVal = thisObj.val(); 15 let crntId; //現在要素のID 16 let nxtId; //次要素のID 17 let trgtRmv; //削除対象のID 18 let crntObj = baseObj; //現在要素 19 let nxtObj; //次要素 20 let sbSctnCln; //サブセクション 21 22 //**********ここから削除処理**************************************** 23   //変更前の値が数値の場合はその数だけ要素を削除する 24 if ($.isNumeric(bfrVal)){ 25 //開始idを割り出す 26 crntId = baseObj.attr('id').slice(-2); 27 crntId = Number(crntId); 28 29 //削除対象要素分繰り返す 30 for (let i=0; bfrVal>i; i++){ 31 crntId++; 32 trgtRmv = "#owhAppSctn"+crntId; 33 trgtRmv = $(trgtRmv); 34 trgtRmv.remove(); 35 } 36 } 37 //**********ここまで削除処理**************************************** 38 39 // プルダウンで選択した数のサブセクションを生成する 40 for (let i=0; sbSctnVal>i; i++){ 41 42 sbSctnCln = baseObj.clone(); //要素コピー 43 nxtId = sbSctnCln.attr('id').slice(-2); //ID下2桁を抽出 44 nxtId = Number(nxtId); //数値に変換 45 nxtId = "owhAppSctn"+(nxtId+i+1); //次のIDを割り出す 46 nxtObj = "#"+nxtId; //次要素を生成 47 48 sbSctnCln.attr('id',nxtId); // コピーした要素にIDを付与 49 50 //要素の後ろにコピーした要素を追加する 51 crntObj.after(sbSctnCln); 52 nxtObj = $(nxtObj); //次要素を生成 53 crntObj = nxtObj; //更新 54 55 } 56 }

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

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

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

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

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

Lhankor_Mhy

2020/06/18 07:59

HTMLをご提示いただけますか?
mcy

2020/06/18 08:13

追記いたしました。
guest

回答1

0

ベストアンサー

if文というのは

js

1if ($.isNumeric(bfrVal)){

↑だと思いますが、bfrValは以下のコードで変更されているようです。

js

1 $('.subSctn1choice select').on('focus', function() { 2 bfrVal = $(this).val(); 3 }).change(function() {

focusイベントを起こさずにセレクトボックスの値を変えた場合、focusイベントのコードが動作せずにchangeイベントのコードが動作しますから、bfrValは変更されず「サブセクション数を選択」という値のままですので、if文の条件が成立することはないかと思います。

実際に試してみましたが、セレクトボックスの値を選択した後に、フォーカスを外さず値を変更すると、そのようなふるまいになりました。

投稿2020/06/18 09:32

Lhankor_Mhy

総合スコア36074

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

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

mcy

2020/06/18 09:50

完全におっしゃる通りでした! デバッグでフォーカスが外れていたのですね。。 ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問