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

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

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

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

jQuery

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

HTML

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

Q&A

解決済

2回答

185閲覧

各フォームの要素を取得したい

penginkunkun

総合スコア17

JavaScript

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

jQuery

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

HTML

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

0グッド

0クリップ

投稿2019/06/03 09:09

各要素のIDを取得したいのですがeditForm.elements[j];でエラーが発生します。
対処方法を教えてもらえないでしょうか?

HTML

1 2<form name="edit_form"> 3 <input type="text" id="pulse_space_min" class="textbox Hop_textbox_width" tabindex="14"/> 4 <input type="text" id="pulse_space_max" class="textbox Hop_textbox_width" tabindex="15"/> 5</form> 6

JavaScript

1 2 3function startEditMode(screenMode) { 4 5 //ページ読み込み時に有効/無効にしたい要素を設定する配列 6 var targetElmAry = ["pulse_space_min", "pulse_space_max"]; 7 var len1 = document.edit_form.length; 8 9 for (var i = 0; i < len1; i++) { 10 var editForm = document.edit_form[i]; 11 var len2 = editForm.length; 12 for (var j = 0; j < len2; j++) { 13 var elm = editForm.elements[j];//エラー 14 switch(elm.type) { 15 case "text" : 16 17 case "checkbox" : 18 19 } 20 } 21 } 22} 23 24

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

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

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

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

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

m.ts10806

2019/06/03 09:16

タグにjQueryついていますがコードを見る限りjQueryは使わないということでしょうか。でしたらタグは外しておいたほうが良いと思います。
m.ts10806

2019/06/03 09:17

また、startEditMode()を呼び出しているところの処理も記載してください。
m.ts10806

2019/06/03 09:19

ちなみに、とりあえずvar len1以降だけで動かすと当該エラーは発生していません。
x_x

2019/06/03 09:21

問題の発生する HTML もお願いします。少なくとも同名の form が複数あるかと思いますが
penginkunkun

2019/06/06 03:41

var elm = document.edit_form[i]; var id = elm.getAttribute("id"); この方法で試してみたらエラーがでませんでしたありがとうございました。
guest

回答2

0

名前をつけたformからinput要素を抜き出してそのidがほしいということでしょうか?

javascript

1<script> 2window.addEventListener('DOMContentLoaded', function(e){ 3 [].forEach.call(document.querySelectorAll("[name=edit_form] input"),function(x){ 4 console.log(x.id); 5 }); 6}); 7</script> 8<form name="edit_form"> 9 <input type="text" id="pulse_space_min" class="textbox Hop_textbox_width" tabindex="14"/> 10 <input type="text" id="pulse_space_max" class="textbox Hop_textbox_width" tabindex="15"/> 11</form>

投稿2019/06/03 09:22

yambejp

総合スコア114829

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

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

penginkunkun

2019/06/06 03:43

参考になります。回答ありがとうございました。
guest

0

自己解決

解決したのでソースを載せておきます。
各フォーム部品の要素はclassではなくidから参照するのを前提で汎用的に書いてみました。
皆さん回答ありがとうございました。

HTML

1<form name="edit_form"> 2 <input type="text" id="pulse_space_min" class="textbox Hop_textbox_width" tabindex="14"/> 3 <input type="text" id="pulse_space_max" class="textbox Hop_textbox_width" tabindex="15"/> 4 <input type="text" id="xxx1_space_min" class="textbox Hop_textbox_width" tabindex="14"/> 5 <input type="text" id="xxx1_space_max" class="textbox Hop_textbox_width" tabindex="15"/> 6 <input type="text" id="xxx2_space_min" class="textbox Hop_textbox_width" tabindex="14"/> 7 <input type="text" id="xxx2_space_max" class="textbox Hop_textbox_width" tabindex="15"/> 8</form>

JavaScript

1 2"use strict"; 3 4 5$(document).ready(function() { 6 7 //var screenMode = getSharedData("screenMode"); 8 var screenMode = 0;//テスト値(0 = パルススペース間隔以外のフォーム部品を無効、1=パルススペース間隔のみ無効) 9 10 startEditMode(screenMode); 11 12}); 13 14 15//モードによって画面の表示切り替えを行う関数(特定の要素が有効であれば他の全ての要素を無効) 16function startEditMode(screenMode) { 17 18 //ページ読み込み時に有効/無効にしたい要素を設定する配列 19 var targetElmAry = ["pulse_space_min", "pulse_space_max"]; 20 var targetBool = screenMode === 0 ? true : false;//モードによって切り替え 21 var len = document.edit_form.length; 22 23 for (var i = 0; i < len; i++) { 24 var elm = document.edit_form[i]; 25 var id = elm.getAttribute("id"); 26 27 switch(elm.type) { 28 case "text" : 29 elm.disabled = editJudgment(targetElmAry, id, targetBool); break; 30 case "checkbox" : 31 elm.disabled = editJudgment(targetElmAry, id, targetBool); break; 32 case "select-one" : 33 elm.disabled = editJudgment(targetElmAry, id, targetBool); break; 34 } 35 } 36} 37 38//各フォームが有効か無効か判断 (ターゲットのフォーム要素名配列, 判定対象の要素名(id), ターゲットのフォーム要素を有効/無効かを判断する値) 39function editJudgment(targetElmAry, elmId, targetBool) { 40 var targetFlg = false; 41 for (var i = 0; i < targetElmAry.length; i++) { 42 var targetElmName = targetElmAry[i]; 43 44 targetFlg = (targetElmName === elmId); 45 if (targetFlg) return targetBool; 46 } 47 48 //ターゲット要素では無い場合 49 if (!targetFlg) return !targetBool;//ターゲット要素が有効であれば無効、無効であれば有効にする 50} 51

投稿2019/06/06 03:36

penginkunkun

総合スコア17

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問