Javascript for循环直到 - 多个条件

时间:2012-10-02 13:23:26

标签: javascript for-loop

我正在使用javascript,使用正则表达式从html代码中抓取图像。

我希望循环运行,直到脚本找不到更多图像或直到它达到12。

我正在尝试以下但不能正常工作:

var imgs = d.getElementsByTagName('img'), found = [];
for(var i=0,img; ((img = imgs[i]) || ( $i < 13)); i++)

这可能吗?我在正确的路线上吗?

javascript的新手但尝试了!

3 个答案:

答案 0 :(得分:15)

您应该使用&&代替||。此外,$i应为i

for(var i=0, img; (img = imgs[i]) && (i < 12); i++)
     found.push(img);

答案 1 :(得分:2)

假设您希望found包含前12个:

var imgs = d.getElementsByTagName('img');
var found = [].slice.call(imgs, 0, 12);

您必须使用[].slice.call(imgs, ...)而不是imgs.slice(),因为imgs只是一个伪数组,而不是真正的数组。

撰写[].slice的替代方法是Array.prototype.slice

如果您想在循环中执行其他操作,只需使用上面创建的数组,以确保您只处理前12个图像:

for (var i = 0, n = found.length; i < n; ++i) {
    // do something with found[i];
}

答案 2 :(得分:2)

我个人讨厌当人们在for循环的条件子句中进行赋值时,因为看起来有人误认为作业(=)进行了比较(===或{{ 1}})。最好在其他地方做逻辑。

==

var imgs = d.getElementsByTagName('img'), 
    found = [],
    i,
    imgsLength = imgs.length,
    max = imgsLength > 13 ? 13 : imgsLength;
for (i = 0; i < max; i++) {
    found.push(imgs[i]);
}