@lynnikvadim

По чему не работает скрипт?

$(".svg").each(function(){
   (function () {
    var desvg = function (selector, removeinlinecss) {

        var images = document.querySelectorAll(selector),
            len = images.length;

        while (len--) {
            var img = images[len],
                imgID = img.id,
                imgClasses = img.getAttribute('class'),
                imgURL = img.getAttribute('src'),
                imgParent = img.parentNode,
                removeinlinecss = removeinlinecss || null,
                svg,
                paths,
                xhr;

            xhr = new XMLHttpRequest();

            xhr.open('GET', imgURL, true);

            xhr.onload = function () {
                var xml = xhr.responseXML;

                if (!xml) {
                    return;
                }

                svg = xml.documentElement;

                paths = svg.querySelectorAll('path');

                if (imgID) {
                    svg.id = imgID;
                }

                if (imgClasses) {
                    svg.setAttribute('class', imgClasses + ' replaced-svg');
                }

                if (removeinlinecss) {
                    for (var i = 0; i < paths.length; i++) {
                        paths[i].removeAttribute('style');
                    }
                }

                svg.removeAttribute('xmlns:a');

                imgParent.appendChild(svg);
                imgParent.removeChild(img);
            };

            xhr.send();
        }
    };
    window.deSVG = desvg;
})();

deSVG(".svg", true);
  });


<img src="{{$Category->img}}" class="svg" width="20" />

Изменяет только одну картинку.
На странице таких картинок более 20 шт.
Что делаю не так ?
  • Вопрос задан
  • 200 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Потому что синтаксис неправильный, о чём вам и сообщили.
Если убрать весь ваш код, получается полная хрень:
$(".svg").each(
    function(){
        (
            function () { /* Тут ваш код, который, кажется, должен работать нормально */ };
            window.deSVG = desvg;
    }
    )();
    deSVG(".svg", true);
    }
);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы