Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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 querySelectorAll仅显示奇数值_Javascript - Fatal编程技术网

Javascript querySelectorAll仅显示奇数值

Javascript querySelectorAll仅显示奇数值,javascript,Javascript,我正在尝试使用木偶师来刮取数据。一切正常,但当我使用querySelectorAll运行循环时,只有奇数值存储在数据数组中 const result = await page.evaluate(() => { let data = []; //array to hold data let elements = document.querySelectorAll('.sortabletable tbody tr'); for (let element of elem

我正在尝试使用木偶师来刮取数据。一切正常,但当我使用querySelectorAll运行循环时,只有奇数值存储在数据数组中

const result = await page.evaluate(() => {
    let data = []; //array to hold data
    let elements = document.querySelectorAll('.sortabletable tbody tr');

    for (let element of elements) {
      let provider = element.childNodes[1].innerText;
      let address = element.childNodes[2].innerText;//this value is not showing
      let city = element.childNodes[3].innerText;
      let zip = element.childNodes[4].innerText;//this value is not showing
      let country = element.childNodes[5].innerText;
      let phone = element.childNodes[6].innerText;//this value is not showing
      let type = element.childNodes[7].innerText;
      data.push({
        provider,
        address,
        city,
        zip,
        country,
        phone,
        type
      }); // Push an object with the data onto our array
    }
    return data; // Return our data array

  });

我打赌这是因为元素之间有文本节点,而文本节点没有您要查找的
innerText

let elements=document.querySelectorAll('.sortabletbody tr');
for(让元素中的元素){
log(element.childNodes[1].innerText);
log(element.childNodes[2].innerText);
log(element.childNodes[3].innerText);
log(element.childNodes[4].innerText);
}

值0值1
价值2
价值3

它们始终是任何标记中的
文本或值
节点,因此当您获取
元素时。childrenNodes
将返回由组成的数组,该数组存储子元素,例如
[text,td,text,td,text,td]
现在,如果在数组上循环,您将发现要从中获取innerText的标记位于奇数位置,而对于其他偶数位置,innerText的值是未定义的

例如。如果你想创造一个

    <p id='ps'>
      Ankit
      <a>raj</a>
      <a>rahul</a>
      amit
    </p>
这也将为您提供相同的
,即[text,a,text,a,text]
这表明每个元素内部可能都有文本节点

建议:

您应该使用
子节点
而不是
子节点
例如:


现在您也可以从0开始。

我已尝试使用您的两种方法。非常感谢你的建议。
const ele = document.getElementById('ps');
console.log(ele.childNodes);
let provider = element.children[0].innerText;
 let address = element.children[1].innerText;
 let city = element.children[2].innerText;
 let zip = element.children[3].innerText;
 let country = element.children[4].innerText;
 let phone = element.children[5].innerText;
 let type = element.children[6].innerText;