如何在当前js元素前插入其他元素?

发布于 2022-09-12 13:57:46 字数 596 浏览 20 评论 0

<!DOCTYPE html>
<html lang="zh-CN">
<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>Document</title>
</head>
<body>
    ...
    其他元素
    ...
    
    要插入元素在这个位置
    <script src="./script.js"></script>
</body>
</html>

就比如上面的代码

我在js文件里面写了代码要创建元素,必须要插入在当前的js元素之前

有没有知道如何做?望指教一下,谢谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

她说她爱他 2022-09-19 13:57:46

给script一个id或者class都可,当然如果只有一个script也可以直接用标签选择器,能select即可。

var $script = document.querySelector('#insert_script')
var $el = document.createElement('div')
$el.textContent = 'insert element';

// 方法一:
// $script.parentElement.insertBefore($el, $script)
// 方法二:
$script.insertAdjacentElement('beforebegin', $el)
ˉ厌 2022-09-19 13:57:46

多说几句吧。这个问题你要这么分析:

  1. 找到插入的元素
  2. 创建新元素
  3. 插入

先说(1)。JS 无法判断自身在哪个节点,所以你有两个选择:1. 给当前节点加标记;2. 查找最后一个 <script>

(2)比较简单,直接 document.createElement()。(3)也简单,找到父元素,insertBefore()

最终代码大约是:

const newElement = document.createElement('div');
// 采用方案二
const scripts = document.getElementsByTagName('script');
const script = scripts[scripts.length - 1];
const parent = script.parentElement;
parent.insertBefore(newElement, script);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文