我正在尝试通过Google跟踪代码管理器致电以下内容:
var s = new XMLSerializer().serializeToString(something)
我遇到的一个问题是ID在每次预订时都会更改,即document.getElementById('Travel_J608883332').innerText
对于预订号是动态的。
我已阅读有关使用querySelectorAll方法创建可动态回退元素的Regex模式的信息:
J608883332
但是,当我在Google跟踪代码管理器中进行测试时,以上内容返回“ undefined”。我认为我在构造它时犯了一个错误?
对于天真问题的道歉,我是这种方法的新手。
谢谢, M
答案 0 :(得分:1)
您可以使用prefix attribute selector。另外,document.querySelectorAll()
返回的集合没有innerText
属性。在此示例中,我将集合转换为数组,并通过映射项目提取了文本。如果每次只有一个元素,请使用document.querySelector()
,然后可以直接提取内部文本。
const text = Array.from(document.querySelectorAll('span[id^="TravelBy_"]'))
.map(el => el.innerText);
console.log(text);
<span id="TravelBy_123">123</span>
<span id="TravelBy_456">456</span>
答案 1 :(得分:0)
querySelectorAll返回一个NodeList,而innerText不是NodeList的属性。 另一点是querySelectorAll不支持正则表达式,但您可以改用CSS选择器:
var queryResult = document.querySelectorAll('span[id^="Travel"]');
console.log(queryResult.innerText); // >>> undefined
console.log(queryResult != null && queryResult.length > 0 ? queryResult[0].innerText : '-');