簡體   English   中英

僅在導航部分中搜索文本?

[英]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";
}

我的代碼幾乎可以正常工作,它只有一個問題,那就是在整個源代碼中尋找“登錄”文本。 即使我已經登錄,通常也在那里。我希望搜索部分僅在導航(菜單)中顯示。 我該怎么辦?

如果我已注銷:菜單(nav)列表(li)之一是“登錄”。 如果我已登錄,該菜單將顯示我的用戶名(因此該網站的導航部分中沒有“登錄”)。

該網站的來源如下:

<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;

這些函數返回一個HTMLNodeList ,它就像一個數組,您需要獲取第一個元素。

這些之一應該工作

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

要么

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM