首页 > 解决方案 > 当它存在于 DOM 中时,querySelector 返回 'Failed to execute div is not a valid selector'

问题描述

当我从代码运行“div ID”时,我遇到了一个问题。

但是,当我document.querySelector('#div-gpt-ad\\/1594654184865-0>div')返回正确的 div ID 时。错误截图:https ://gyazo.com/a7f1898f246bd84f28e85c2052ac60eb

div id在执行代码前已经存在于页面上,renderDiv函数中的console.log返回

这是我要执行的代码:

var slots = window.top.googletag.pubads().getSlots();
 
init(slots);
function init(slots) {
    for (let i = 0; i < slots.length; i++) {
        renderDiv(slots[i]);
    }
}
function getSelectors(slot) {
    var escapeCheck = slot.getSlotElementId();
    if(escapeCheck.includes('/')){
       let placeHold = escapeCheck.replace(/\//g, '\\\\/');

        return  "#" + placeHold + ">div" ;
    } else{ 
    return "#" + escapeCheck + ">div";
}
}
function renderDiv(slot) {
        let selector = getSelectors(slot);
        
        console.log("Selector:" + selector)
       document.querySelector(selector)

}

标签: javascriptescapingqueryselector

解决方案


固定的!

改为let placeHold = escapeCheck.replace(/\//g, '\\\\/'); _

let placeHold =escapeCheck.replace(/\//g, "\\/").replace(/\./g, "\\.");

我还不太明白的是为什么第一个不起作用,因为正在通过的字符串是正确的


推荐阅读