Home > Mobile >  loop document.getElementsByClassName
loop document.getElementsByClassName

Time:09-18

I should loop document.getElementsByClassName but first doing a check.

For just one element I would do this:

if (document.getElementsByClassName('lazyload img-responsive wp-post-image')[0].getAttribute('width') < 500){
document.getElementsByClassName('lazyload img-responsive wp-post-image')[0].setAttribute("srcset", " https://www......jpg ");}

But I have to repeat it for more elements and I never know how many there are. I would need such a loop but with the verification document.getElementsByClassName ('lazyload img-responsive wp-post-image') [0] .getAttribute ('width') <500 first.

var elements = document.getElementsByClassName('lazyload img-responsive wp-post-image');
for (var i = 0, l = elements.length; i < l; i  ) {
    elements[i].setAttribute("srcset", " https://www......jpg  ");
}

How could I solve? Thanks

CodePudding user response:

Not sure if your requirement is clear. Is it that, you need to check only element[0] for its width and then set srcset for all remaining elements? Or you need to test respective element[i] and the elements[i].setAttribute("srcset", " https://www......jpg ");

If 1st one is true then you can try:

var elements = document.getElementsByClassName('lazyload img-responsive wp-post-image');
if(elements[0].getAttribute('width') < 500){
    for (var i = 0, l = elements.length; i < l; i  ) {
        elements[i].setAttribute("srcset", " https://www......jpg  ");
    }
}

If 2nd is true, then try:

var elements = document.getElementsByClassName('lazyload img-responsive wp-post-image');
for (var i = 0, l = elements.length; i < l; i  ) {
    if(elements[0].getAttribute('width') < 500){
        elements[i].setAttribute("srcset", " https://www......jpg  ");
    }
}
  • Related