2016-06-24 8 views
0

Noobの質問は、基本的には私がやりたいことは、HTMLの配列からURLを取得することです、これは、このタスクを達成するための最良の方法である場合、私は知らないこのRegExがこの変数と一致しないのはなぜですか?ここ

var images = document.querySelectorAll('div.uiScaledImageContainer img') 
    imageSelector = /(?:http.*(?="))/ 

    for (var i = 0; i < images.length; i++) { 
console.log((imageSelector.exec(images))[i]); 
} 

copypastes、私がしてきました私が今までに学んだことを思いついたのです。

RegExチェッカーに配列を貼り付けると、RegExがURLと一致します。しかし、コンソールにvarとRegExを手動で入力すると、.testのときはfalseを返し、.execのときは明らかにnullを返します。 そして、私は何が間違っていたのか疑問に思って頭を傷つけています。

>images 
[ 
<img class="scaledImageFitHeight img" src="https://scontent-dfw1-1.xx.fbcdn.net/v/t1.0-0/p160x160/12734050_927062960744742_7453187646865179877_n.jpg?oh=8be38f653466ef122bab606b11f6a87c&amp;oe=57ED6259" style="left:-85px;" alt="Te Queremos Escuchar's photo." width="423" height="157"> 
, 
<img class="scaledImageFitHeight img" src="https://scontent-dfw1-1.xx.fbcdn.net/v/t1.0-0/p296x100/13442267_1033303953373035_4117048021887988380_n.jpg?oh=ec9b7dd3f8daabc26d66d32d393437a8&amp;oe=57F1715B" style="left:0px;" alt="Academia de Cultura Asiática Ninshi's photo." width="296" height="394"> 
, 
] 
>imageSelector 
/(?:html.*?(?=")/ 
>imageSelector.test(images) 
false 
+0

結果のを使用する必要があり、画像のsrcを取得しますDOM要素の選択は文字列ではありません。 –

答えて

0

あなたはimagesimageSelector.exec(images))でテストを行うが、あなたはimages[i]上でテストをしたいです。

さらに、imagesNode要素のリストであり、ノードは文字列ではありません。

文字列以外のオブジェクトをexecに渡すと、文字列に変換されます。オブジェクトにtoStringメソッドがある場合は、このメソッドが使用されます。したがって、imageSelector.exec(images[i])を実行すると、​​と等しくなります。画像上のtoStringは、[object HTMLImageElement]のようなものになります。

あなたは、画像の全体HTMLに正規表現を適用したい場合は、あなたがouterHTMLを使用する必要があります。imageSelector.exec(images[i].outerHTML)

しかし、あなたはimages[i].getAttribute('src')MDN: getAttribute

+0

私はDOM要素が何であるかを知りませんでしたが、今はそれらを文字列にする方法と、outerHTMLを取得する方法も知っています。そして、私は、.execが非文字列オブジェクトを文字列に変換することを学びました。 ありがとう –

関連する問題