質問編集履歴

1 コードの詳細を記載しましgた

SugiuraY

SugiuraY score 249

2019/10/28 00:51  投稿

配列にpushした要素にアクセスできない
以下のように、Jqueryで各id名称を取得して配列に格納しようと思っております。
each()とattr()を組み合わせて取得することができたのですが、
console.log(idAry);の結果は、以下の通り不思議な形で出力されています。
[0:"hoge",1:"fuga"]
通常通りの出力を期待するのであれば、添字なしで以下の通りです。
["hoge","fuga"]
また、想定しない形での配列となってるせいかconsole.log(idAry[0]);の結果も
undefinedとアクセスすることができません。
jqueryオブジェクトの使用によるものなのか、検討しているのですが
onsole.log(typeof($(this).attr('id')));//stringなので
それぞで文字列をpushしているので期待通りの配列ができると思ったのですが
上記の期待した配列を得ることができませんでした。
原因と期待する配列を取得すると言う意味での解決方法についてアドバイスを願えますでしょうか。
```html
<div id="hoge" class="bar"></div>
<div id="fuga" class="bar"></div>
```
```javascript
var idAry=[];
$(function(){
   $('.bar').each(function(){
     console.log(typeof($(this).attr('id')));//string
     idAry.push($(this).attr('id'));
   })
})
console.log(idAry);//[0:"hoge",1:"fuga"]
console.log(idAry[0]);//undefined
```  
 
追記コード(詳細は下記の通りです)  
```html  
<div id="hoge" class="bar"></div><!--処理する要素-->  
<div id="fuga" class="bar"></div><!--処理する要素-->  
<div class="bar"></div>  
 
 
```  
 
 
```javascript  
<script>  
var idAry=[];  
 
$(function(){  
   $('.bar').each(function(){  
     console.log(typeof($(this).attr('id')));//string  
     idAry.push($(this).attr('id'));  
   })  
})  
 
var idAryLen=idAry.length;  
 
for (var i = 0; i < idAryLen; i++) {//期待される配列は['hoge','fuga']  
 idAddtext(idAry[i]);  
}  
 
function idAdtext(getId){//配列のすべての要素にidAdtextを適用する  
$(function(){  
  $('#'+getId).on('click',function(){  
     $(this).text('something');  
  })  
})  
}  
 
</script>  
```
  • JavaScript

    28647 questions

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

  • jQuery

    11022 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る