JavaScript insertBefore函数工作不正常
我在javascript中使用insertBefore函数,但它不起作用,没有返回任何错误,也没有插入任何元素。但当我对同一个函数使用append函数时,它就工作了。我对此感到困惑。请告诉我该怎么做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
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);