querySelectorAll为dyanmic跨度ID

时间:2019-02-01 12:35:56

标签: javascript google-tag-manager

我正在尝试通过Google跟踪代码管理器致电以下内容:

var s = new XMLSerializer().serializeToString(something)

我遇到的一个问题是ID在每次预订时都会更改,即document.getElementById('Travel_J608883332').innerText对于预订号是动态的。

我已阅读有关使用querySelectorAll方法创建可动态回退元素的Regex模式的信息:

J608883332

但是,当我在Google跟踪代码管理器中进行测试时,以上内容返回“ undefined”。我认为我在构造它时犯了一个错误?

对于天真问题的道歉,我是这种方法的新手。

谢谢, M

2 个答案:

答案 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 : '-');