■99375 / inTopicNo.4) |
Re[1]: JavaScriptのデータ参照方法について(Chrome) |
□投稿者/ 魔界の仮面弁士 (3309回)-(2022/03/25(Fri) 11:23:00)
|
■No99369 (Kyouta さん) に返信 > IE11、ChromeのどちらでもNAMEを変数で指定し参照する方法を行いたいのですが、 document.all プロパティは既に非推奨です。
歴史的な事情もあって、例外的に唯一の falsy オブジェクトとして生き残ってはいたりもしますが、 既に過去の遺物であり、現状で使用すべきものではありません。 https://qiita.com/jkr_2255/items/f9b7218d7a2b54424c12 https://developer.mozilla.org/ja/docs/Web/API/Document/all
form 要素を取得したいなら、document.forms["MAIN"] を使うことができます。 この記法であれば、IE3.02 でも Chrome 99 でも動くかと思います。丸かっこではない点に注意。 form 配下のコントロールに対してアクセスしたいなら、elements プロパティ経由で document.forms["MAIN"].elements["TEST1_M1"].value のように指定します。
あるいは form から辿らずに、name での要素指定のために document.getElementsByName("TEST1_M1")[0].value のように指定することもできます。メンバー名が Elements と複数系になっていることからも 分かるように、このメソッドは複数のノードを返します。そのため、.length や [0] などを併用します。
name 属性ではなく id 属性を扱える HTML 構造だった場合には、 document.getElementById("id値").value も使えます。name と違って、id は一意性がある前提なので、こちらのメソッドは 複数形の Elements ではなく単数形の Element というスペルになります。 id は大文字小文字が区別される点にもご注意を。(今回の HTML には id 属性が無いですが)
ただ JavaScrtip 以前の問題として…提示されたサンプルは、 select タグの直下に input type="hidden" が置かれていますよね。 これは HTML 構造としてあまりにも出鱈目すぎます。
本来であれば、select の直下に配置できるのは 「Zero or more option, optgroup, and script-supporting elements.」であり、 ここに input タグが来ることは想定されていません。
そのため、Chrome 等で提示の HTML を読み込ませた場合には、 <input type="hidden" name="TEST1_M1" value="T1"> の直前に </select> タグが省略されたものとして解釈されることになります。
他にも色々おかしな点がありますが…本題から離れてしまうので。
|
|