Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как получить url всех элементов nodeList ? (https://javascript.ru/forum/dom-window/77976-kak-poluchit-url-vsekh-ehlementov-nodelist.html)

maxim1978 09.07.2019 06:57

Как получить url всех элементов nodeList ?
 
Столкнулся с проблемой
Я хочу в зависимости от соотношения сторон изображения получить в кансоле уведомление и делаю это так :

let images = document.querySelectorAll("img");

images.forEach(function(url){
    
    let img = new Image();
    img.src = url;
    img.onload = e = console.log(url, ar(img));
    
 
})

function ar(img){
    if(img.width > img.height) {
        return"Альбом"
    }
    
    if(img.width < img.height) {
        return"Портрет"
    }
    
    if(img.width == img.height) {
        return"Квадрат"
    }
}


Разумеется что существует папка img в которой три изображения разных соотношений сторон
1) Вертикальная
2) Альбомная
3) Квадратная

В index.html просто написано

<img src="img/pic1.png" alt="">
 <img src="img/pic2.png" alt="">
 <img src="img/pic3.png" alt="">




Но в кансоль выводит вот это :



Почему такой вывод когда ожидается вывести то что в return и должно выводится url ?

laimas 09.07.2019 07:42

Строки 3-10 кода, должно быть

images.forEach(function(url){
    let img = new Image();
    img.src = url.src;
    img.onload = function() {
        console.log(ar(this))      
    }
});


PS. А функцию возвращающую отношения сторон можно описать короче, тернарным оператором:

return img.width > img.height ? "Альбом" : img.width < img.height ? "Портрет" : "Квадрат"

maxim1978 09.07.2019 08:07

Цитата:

Сообщение от laimas (Сообщение 510019)
Строки 3-10 кода, должно быть

images.forEach(function(url){
    let img = new Image();
    img.src = url.src;
    img.onload = function() {
        console.log(ar(this))      
    }
});


PS. А функцию возвращающую отношения сторон можно описать короче, тернарным оператором:

return img.width > img.height ? "Альбом" : img.width < img.height ? "Портрет" : "Квадрат"

спасибо - помогло

laimas 09.07.2019 08:07

Цитата:

Сообщение от maxim1978
а почему не выводится url перед aspectRatio ?

У кого, в вашем коде? Потому как вы выводите объект.
У меня? Потому, что я его не вывожу, но добавьте коли надо:

console.log(this.src, ar(this))

maxim1978 09.07.2019 08:15

Цитата:

Сообщение от laimas (Сообщение 510022)
У кого, в вашем коде? Потому как вы выводите объект.
У меня? Потому, что я его не вывожу, но добавьте коли надо:

console.log(this.src, ar(this))

Всё сделано ..спасибо ..здесь можно отметить решением ?

laimas 09.07.2019 08:35

Цитата:

Сообщение от maxim1978
здесь можно отметить решением ?

Не понял, что отметить?

maxim1978 09.07.2019 08:45

Цитата:

Сообщение от laimas (Сообщение 510024)
Не понял, что отметить?

к примеру как в stackoverflow или как на toster можно ответ отметить решением, здесь наверно такого нету

laimas 09.07.2019 08:49

Цитата:

Сообщение от maxim1978
здесь наверно такого нету

Есть - http://javascript.ru/formatting

maxim1978 09.07.2019 09:00

Цитата:

Сообщение от laimas (Сообщение 510026)

неее...не это ..не оформление вопроса а именно отметить Твой ответ как решение ладно проехали

рони 09.07.2019 10:47

maxim1978,
здесь темы не закрывают и не отмечают пост, как решение, достаточно спасибо и сообщения, что такой-то пост помог, и возле ника в этом сообщении есть + для кармы.


Часовой пояс GMT +3, время: 15:28.