Noob在这里提问,基本上我想做的是从一系列html copypastes中捕获一个url
var images = document.querySelectorAll('div.uiScaledImageContainer img')
imageSelector = /(?:http.*(?="))/
for (var i = 0; i < images.length; i++) {
console.log((imageSelector.exec(images))[i]);
}
我不知道这是否是实现此任务的最佳方法,我已经学习了如何编写不到一个月的代码,这就是我想出的方法。到目前为止已经学到了。
当我将数组粘贴到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&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&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 :(得分:0)
您在images
(imageSelector.exec(images)
)上进行了测试,但您希望在images[i]
上进行测试。
除此之外images
是Node
个元素的列表,而Node不是字符串。
如果将非字符串对象传递给exec
,则它将转换为字符串。如果对象具有toString
方法,则将使用此方法。因此,如果您执行imageSelector.exec(images[i])
,那么它将等于imageSelector.exec(images[i].toString())
。图片上的toString
会产生类似[object HTMLImageElement]
的内容。
如果您想在图片的整个html上应用RegExp,那么您需要使用outerHTML
:imageSelector.exec(images[i].outerHTML)
但要获取图片的src
,您应该使用images[i].getAttribute('src')
(MDN: getAttribute)