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

<!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元素之前

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

阅读 2.5k
2 个回答

给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)

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

  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);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏