[英]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.