Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Почему не отрабатывает замена одного элемента другим ? (https://javascript.ru/forum/misc/72592-pochemu-ne-otrabatyvaet-zamena-odnogo-ehlementa-drugim.html)

Black_Star 11.02.2018 13:38

Почему не отрабатывает замена одного элемента другим ?
 
Добрый день уважаемые. Подскажите пожалуйста почему не срабатывает функция .replaceWith в этом маленьком примере
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>title</title>
</head>
<body>
<img class="myPicture" src="" alt="picture">
<img class="myPicture" src="" alt="picture">

<script>
window.onload = function(){
var svgPicture = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><rect x="60" y="10" rx="10" ry="10" width="30" height="30" stroke="black" fill="#f00" stroke-width="5"/></svg>'
var myImg = document.querySelectorAll(".myPicture");
myImg[1].replaceWith(svgPicture);
}
</script>
</body>
</html>

Необходимо второе фото после загрузки заменить на svg вставку? Что не так? Как исправить ?

laimas 11.02.2018 13:58

.replaceWith - стоит ли, ведь в JS, в отличии от JQ, этот метод не все браузеры поддерживают?

Black_Star 11.02.2018 14:04

Я пока не нашёл другой аналогичной функции. Если есть предложения, я готов выслушать :) Этот метод пока не рабочий для чистого JS

laimas 11.02.2018 14:21

Цитата:

Сообщение от Black_Star
Если есть предложения, я готов выслушать

Не слушать, а читать.

Black_Star 11.02.2018 16:03

Спасибо, за доки но чёт я где-то туплю
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>title</title>
</head>
<body>
<img class="myPicture" src="" alt="picture">
<img class="myPicture" src="" alt="picture">
 
<script>
var svgPicture = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><rect x="60" y="10" rx="10" ry="10" width="30" height="30" stroke="black" fill="#f00" stroke-width="5"/></svg>';

var imgSvg = document.createElement('div');
imgSvg.innerHTML = svgPicture;

var myImg = document.querySelectorAll(".myPicture");
myImg[1].parentNode.replaceChild(imgSvg,myImg[1]);

</script>
</body>
</html>

Оно выводит, но вот как избавиться от div-а обертки я пока не могу придумать. Мне просто один элемент надо менять на другой

j0hnik 11.02.2018 19:15

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>title</title>
</head>
<body>
<img class="myPicture" src="" alt="picture">
<img class="myPicture" src="" alt="picture">
 
<script>
var svgPicture = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><rect x="60" y="10" rx="10" ry="10" width="30" height="30" stroke="black" fill="#f00" stroke-width="5"/></svg>';

document.querySelectorAll(".myPicture")[1].outerHTML = svgPicture;

</script>
</body>
</html>


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