LoginSignup
0
1

More than 3 years have passed since last update.

js domから要素を取得して、必要な値のみ取得する

Last updated at Posted at 2021-04-15

複数のradioボタンから情報を抜き出し、どこが選択されているかを調べる処理を行う。

radioボタンから、必要なvalueのみを取得する。
この時3パターンできることに気がつき書いてみた。

1はforeachで回す
2はfilterで取得する
3はfor of で回す

A<input id="text1" name="sample" type="radio" value="https://media/1">
B<input id="text2" name="sample" type="radio" value="https://media/2">
C<input id="text3" name="sample" type="radio" value="https://media/3">
<input id="btn" type="button" value="test" onClick="sample()">
let sample = function(){
  let link_ids = document.getElementsByName('sample');
  //#sample1
   link_ids.forEach(element => {
     if (element.checked == true){
         location.href = element.value
          //radioボタンが選択されているurlに飛ぶ
     }
   });

  //#sample2
   let array_ids = Array.from(link_ids)
   let data = array_ids.filter(link => link.checked == true)
    for (let i of data){
        if (i.checked){
            location.href = i.value
        }
    }

  //#sample3
  for (let i of link_ids){
    if(i.checked){
      location.href = i.value
    }
  }

  //sample4
  let data = document.querySelector('input[name=mytext]:checked');
    if(d !== null) {
       location.href = d.value;
    }

radioボタンの要素を取得すればnodelistとして取得できる。
link_idsは[object NodeList]として扱われる。
その時、foreachで回すことが可能

filterを使う際にはArrayに一度変換しなければならないようです。
filterは配列限定みたいですね。

for ofであれば、nodelistも回すことができるようです。

filterのみ、純正なarray(配列)しか回せないことが判明し勉強になりました。。。

追記

sample4では、選択されたradioのみを取得

  //豆知識
  let toString = Object.prototype.toString;
  console.log(toString.call(link_ids))
  //valueの型を調べてくれる link_idsは"[object NodeList]"
  //配列は"[object Array]"

  let ele = Array.from(link_ids)
  //配列に変換 objectがNodelistの場合にも可能


参考資料:

nodelist foreach
https://developer.mozilla.org/ja/docs/Web/API/NodeList/forEach
filter
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
型確認
https://techacademy.jp/magazine/35968
配列に変換
https://lab.syncer.jp/Web/JavaScript/Snippet/53/

0
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1