如何在JavaScript中访问变量属性

时间:2018-02-21 05:57:30

标签: javascript ecmascript-6

const textContent = await page.evaluate(() => {
  let name = document.querySelector('.listing-name').innerText;
  let street = document.querySelector('.street').innerText;
  let call =  document.querySelector(".ion-android-call").innerText;
  return name + "^" + street + "^" + call;
});

await console.log(textContent.name); 

我想在此处textContent.name访问,但会打印undefined值。

如何访问属性?

是否可以访问textContent

的属性

2 个答案:

答案 0 :(得分:0)

正如亚历山大在他的评论中所说的那样,textContent不是一个对象而只是一个字符串。如果您想要在不更改字符串的情况下访问不同的值,可以使用String.split之类的

console.log(textContent.split('^')[ 0 ])

根据' ^'的位置自动将textContent变量拆分为数组。存在(并在此过程中删除它们。)

如果您希望将其设为基于对象的方法,则需要在调用page.evaluate时修改代码以适应,例如

const textContent = await page.evaluate(() => {
  let name = document.querySelector('.listing-name').innerText;
  let street = document.querySelector('.street').innerText;
  let call =  document.querySelector(".ion-android-call").innerText;
  return {
    name: name,
    street: street,
    call: call
  }
});

await console.log(textContent.name);

您还可以创建一个单独的变量Object并在其中设置属性和值,然后返回它,这将消除2/3局部变量,或者如上所述直接使用return,而是在其中设置属性值并使用没有变数。但是对于你来说,最可读的东西往往是你编写自己的代码的最佳方式,至少在你决定改变你的风格之前(或者它自然地演变)。

答案 1 :(得分:0)

您可以通过返回来公开本地块的其他属性。

const textContent = await page.evaluate(() => {
  let name = document.querySelector('.listing-name').innerText;
  let street = document.querySelector('.street').innerText;
  let call =  document.querySelector(".ion-android-call").innerText;
  return 
    {
     content: name + "^" + street + "^" + call,
     name: name ,
     street : street,
     call : call
});

您无法通过textContent.content访问原始结果并使用textContent.name命名。