仅在导航部分搜索文本?

Search for text only in the nav part?

我正在尝试编写一个用户脚本,让我在每天使用的网站上自动登录。

我想让脚本先检查我是否登录,只有当我退出时才执行其余的。

var content = document.body.textContent;
var hasText = content.indexOf("Login")!==-1;
if(hasText){
        document.getElementById("useremail").value = "mymail@gmail.com";
        document.getElementById("userpassword").value = "mypassword123";
}

我的代码几乎可以正常工作,唯一的问题是在整个源代码中寻找 "login" 文本。通常在那里,即使我登录了。我希望搜索部分只在导航(菜单)中查看。我该怎么做?

如果我已注销:菜单 (nav) 列表 (li) 之一是 "Login"。 如果我已登录,该菜单会显示我的用户名(因此网站的导航部分没有登录)。

网站的来源如下:

<body>
 <section id="main-header" class="headersclass">
  <div class="container">
   <header>
    <div class="menusdiv">
     <nav class="mainmenu">
      <ul>
       <li class="menulisting">
       <li class="menulisting">
       <li class="menulisting">
      </ul>
     </nav>
    </div>
   </header>
  </div>
 </section>
 ...random text of the site...
 ...the word "Login" can appear anywhere...
</body>

我试过将脚本的第一行更改为下一行,但总是出错:

var content = document.body.nav.textContent;

var content = document.body > nav.textContent;

var content = document.body.section.div.header.div.nav.textContent;

var content = document.querySelectorAll('nav').textContent;

var content = document.getElementsByTagName("nav").textContent;

var lookhere = document.getElementsByTagName("nav");
var content = lookhere.textContent;

你需要这样使用:

var content = document.getElementsByClassName("mainmenu")[0].textContent;

或者,就像您尝试访问的方式一样:

var content = document.getElementsByTagName("nav")[0].textContent;

这些函数return一个HTMLNodeList,它就像一个数组,需要获取第一个元素

其中任何一个都应该有效

var content = document.getElementsByClassName('mainmenu')[0].textContent;

var content = document.getElementsByTagName('nav')[0].textContent;