# Js after() not working properly

**URL:** <https://forums.creativeclouddeveloper.com/t/js-after-not-working-properly/6742>\
**Category:** Photoshop\
**Tags:** bug, uxp, javascript\
**Created:** [August 28, 2023, 12:53am UTC](https://forums.creativeclouddeveloper.com/t/js-after-not-working-properly/6742 "2023-08-28T00:53:10Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![efreetcs](https://avatars.discourse-cdn.com/v4/letter/e/8e8cbc/32.png) [@efreetcs](https://forums.creativeclouddeveloper.com/u/efreetcs)\
**Post date:** [August 28, 2023, 12:53am UTC](https://forums.creativeclouddeveloper.com/t/js-after-not-working-properly/6742/1 "2023-08-28T00:53:10Z")

</div>

Hello, I have an issue with the **after()** method (inserting node after another one).

**index.html :**

```auto
<!DOCTYPE html>
<html>
<head>
  <script src="test.js"></script>
</head>
<body>
  <div>
    <div>
      <a id="button1">button1</a>
    </div>
  </div>
  <div>
    <div>
      <div>
        <a id="button2">button2</a>
      </div>
    </div>
  </div>
</body>
</html>

```

**JS in PS plugin :**

```auto

document.addEventListener("DOMContentLoaded", () => {
    let b1 = document.getElementById("button1");
    b1.addEventListener("click", (e) => {
        let div = e.target.parentElement.parentElement;
        let div2 = document.createElement("span");

        div.after(div2);
    });

    let b2 = document.getElementById("button2");
    b2.addEventListener("click", (e) => {
        let div = e.target.parentElement.parentElement;
        let div2 = document.createElement("span");

        div.after(div2);
    });
});

```

This works well for both buttons in chrome.  
It works only for button1 in a PS plugin.

Is there something I don’t see, or is after() method buggued ?

Thank you !

---

<div class="post-metadata">

**Author:** ![efreetcs](https://avatars.discourse-cdn.com/v4/letter/e/8e8cbc/32.png) [@efreetcs](https://forums.creativeclouddeveloper.com/u/efreetcs)\
**Post date:** [August 28, 2023, 1:54am UTC](https://forums.creativeclouddeveloper.com/t/js-after-not-working-properly/6742/2 "2023-08-28T01:54:37Z")

</div>

_Notes : insertBefore() has the same problem._

I have another way to do the same thing, by replacing :  
**div.after(div2)** with : **div.insertAdjacentElement(“afterend”, div2)**

---

<div class="post-metadata">

**Author:** ![Majji](https://avatars.discourse-cdn.com/v4/letter/m/71e660/32.png) [@Majji](https://forums.creativeclouddeveloper.com/u/Majji)\
**Post date:** [September 21, 2023, 9:52am UTC](https://forums.creativeclouddeveloper.com/t/js-after-not-working-properly/6742/3 "2023-09-21T09:52:26Z")

</div>

@efreetcs There seems to be an issue with after() in UXP. The placement of the newly added div in the button1 case is also incorrect. I have created a ticket to fix this in UXP (Ticket ID: 21953). I would suggest you use insertBefore for now in this way.

```auto
<script>
    document.addEventListener("DOMContentLoaded", () => {
    let b1 = document.getElementById("button1");
    b1.addEventListener("click", (e) => {
        let div = e.target.parentElement.parentElement;
        let div2 = document.createElement("span");
        div2.innerHTML = "div 2 from button 1 click";
        div.parentElement.insertBefore(div2, div.nextSibling);
    });

    let b2 = document.getElementById("button2");
    b2.addEventListener("click", (e) => {
        let div = e.target.parentElement.parentElement;
        let div2 = document.createElement("span");
        div2.innerHTML = "div 2 from button 2 click";
        div.parentElement.insertBefore(div2, div.nextSibling);
    });
});
</script>

```

 ![image](https://us1.discourse-cdn.com/flex015/uploads/xdplugins/original/2X/4/485cdd91fd81c298ba9b7a4bff2a4e6d85a6b835.png)
