HTMLのelementの配列

javascriptで変数aが配列かどうか確かめる場合、多くの情報には

Array.isArray(a)

を使うということが書かれている。

 

この間それでハマった。

たとえばカートみたいな、いくつか商品が並んでいるようなものを想像してほしい。
同じinputの項目で、goodsnameみたいなものがあって、ミカンを買う。みかん一個であればelement goodsnameの値はミカン一つだ。

しかし、ミカンとリンゴを買うとしたら、goodsnameは2つ存在することになる。当然配列になる・・・?

実際に二つ商品を買う場合に、配列と仮定して、たとえば

var goodsname=document.myform.goodsname;
for(var i=0; i<goodsname.length; i++){
// goodsname[i]として、それぞれの商品に何らかの処理をする
}

みたいなことはできるのです。しかし、これではミカンしか買わない場合には使えない。

そこで

var goodsname=document.myform.goodsname;
if(Array.isArray(goodsname)){
for(var i=0;i<goodsname.length;i++){
//goodsname[i]を処理
}
}
else {
// 一個しかないのでgoodsnameを処理
}

こんな風に書きたいですよね。

ところが、isArray(goodsname)としても、これは配列ではないとしてfalseを返してしまう。

 

htmlのelementsの場合には、isArrayでは判定できないんです。
どうしたらいい?

自分は最終的に
if(goodsname.lendth==undefined){
}
みたいな判定分にしました。これが正しいやり方なのかどうかはわかりません。動いてはいるのでいいのではないか。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください