Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript insertBefore函数工作不正常_Javascript_Html - Fatal编程技术网

JavaScript insertBefore函数工作不正常

JavaScript insertBefore函数工作不正常,javascript,html,Javascript,Html,我在javascript中使用insertBefore函数,但它不起作用,没有返回任何错误,也没有插入任何元素。但当我对同一个函数使用append函数时,它就工作了。我对此感到困惑。请告诉我该怎么做 let checkout__button = document.querySelectorAll(".shopify-payment-button__button"); checkout__button.forEach(function (response) { let cloneBtn = r

我在javascript中使用insertBefore函数,但它不起作用,没有返回任何错误,也没有插入任何元素。但当我对同一个函数使用append函数时,它就工作了。我对此感到困惑。请告诉我该怎么做

let checkout__button = document.querySelectorAll(".shopify-payment-button__button");
checkout__button.forEach(function (response) {
  let cloneBtn = response.cloneNode(true);
  cloneBtn.classList.add("plusbooster__btn","__beforeCheckout_trigger");
  response.parentNode.insertBefore(cloneBtn, response);
  response.classList.add("PB_hidden");
});

我认为问题在于您使用的是
parentNode
,而不是
parentElement
(尽管不确定)

就我个人而言,我更喜欢使用
insertAdjacentElement
,它比
insertBefore
(而且您不需要执行那种难看的
parentNode/Element
调用)更通用


能否请您创建一个以可复制的方式显示问题的示例?我已经将该代码与一些
html标记一起使用,并且工作正常。您希望在什么之前插入什么?您不能将数组传递给
类列表。add()
,只能传递字符串。要添加几个类,您需要分别为每个类调用
classList.add()
,否则它在IE 11及以下版本中无法工作。因此,您可以获得一个按钮列表,克隆每个按钮并将其插入原始按钮之前,然后添加一个CSS类,表明您隐藏了原始按钮。那么,您可能不会注意到差异……为什么要将参数放入数组中的
classList.add()
response.insertAdjacentElement('beforebegin', cloneBtn);