31207


**修正後の質問**  
・下記の時、enclosure 要素のurl属性を取り出すにはどうすれば良いでしょうか？

[code]

    var xml = '<foo><enclosure url="http://example.com" /></foo>';
    var thisItem = $(xml);
    console.log(thisItem.children('enclosure'));
    
[/code]

* * *

**当初の質問**

[code]

    console.log(thisItem.children('enclosure'));
    
[/code]

・コンソール画面が、下記画像のような状態となりました

Q1  
・この時、画像urlを文字列として取得したいのですが、どう書けば良いでしょうか？

Q2

[code]

    typeof thisItem.children('enclosure');
    
[/code]

・undefinedになりました  
・これはノードリスト？  
・今、どういう状態なのでしょうか？

コンソール画面画像

[![画像の説明をここに入力](https://i.stack.imgur.com/3KiVJ.jpg)](https://i.stack.imgur.com/3KiVJ.jpg)


CC BY-SA 3.0
2016-12-16T15:47:48.313
31189
2016-12-20T18:14:00.687
2016-12-20T10:29:02.287
7886
7886
question
javascript jquery
enclosure 要素のurl属性を取り出したい


再現例としてはこんなところでしょうか。

[code]

    var xml = '<foo><enclosure url="http://example.com" /></foo>';
    var thisItem = $(xml);
    console.log(thisItem.children('enclosure'));
    
[/code]

ここで `enclosure` 要素のurl属性を取り出したいのですよね。

XMLのテキストを `$()`
関数に渡した場合、（ブラウザがHTMLに対してするように）パース処理とDOMツリーの構築が行われ、ルート要素を選択した状態のjQueryオブジェクトが得られます。

ですから例えば `<img src="http://example.com" />` から src属性を取り出すのと同じように、jQueryの
`.attr()` メソッドが使えます。

[code]

    var xml = '<foo><enclosure url="http://example.com" /></foo>';
    var thisItem = $(xml);
    console.log(thisItem.children('enclosure').attr('url'));
    
[/code]

上記のコードに `console.log(typeof thisItem.children('enclosure'))` を書き足せば、 `object`
という文字列が出力されます。`undefined` は何かの間違いのような気がします。

ちなみに、jQueryオブジェクトはDOMの[Elementオブジェクト](https://developer.mozilla.org/ja/docs/Web/API/Element)の配列に各種メソッドを足したようなオブジェクトです。ほとんどのメソッドは
`.children()` のように再びjQueryオブジェクトを返すか、`.attr()` のように取得した値を返すかのどちらかで、`[0]` や
`.get(0)` などを使って取り出さない限り NodeやNodeListなどのDOMのオブジェクトが直接現れることはありません。


CC BY-SA 3.0
2016-12-17T15:06:30.937
31207
2016-12-17T15:29:16.837
2016-12-17T15:29:16.837
8000
8000
31189
answer