2013-05-14 123 views
5

讓我們說字符串「完成成功」顯示在網頁的某處,有沒有辦法知道這個字符串是否僅使用javascript存在? 謝謝。Javascript:如何檢查網頁中是否存在文本

+0

不知道你是問什麼,或者你嘗試過什麼...... – Neal 2013-05-14 18:17:55

+3

是有,但對於你想要做的事情來說,這可能不是最好的解決方案。解釋您的完整問題以及您迄今爲止嘗試解決問題可能更有用。 – 2013-05-14 18:17:59

+3

本網站的目的是幫助您修復您編寫的代碼。第一部分是你需要編寫代碼。認識我們有辦法。 – Cam 2013-05-14 18:18:50

回答

24

更多詳細信息將有所幫助。可能有更好的方法。但是,這是您所提供的最好給出什麼樣的信息:

if (
    (
    document.documentElement.textContent || document.documentElement.innerText 
).indexOf('Done successfuly') > -1 
) { 
    // Do something... 
} 

如果你知道ID或類名或其它方式選擇直接包含文本的元素(如h1#someHeading span ...)那麼你或許應該這樣做因爲它會更高效並且通常是更清潔的方法。

編輯值得注意的是:這種方法也會在SCRIPT和STYLE標籤中選取文本,這可能不是您想要的。 textContentinnerText在瀏覽器中也有各種各樣的怪癖。 See this for more info

+0

正常工作,謝謝:) – Sam 2013-05-14 18:30:49

+0

@ user2348365如果這回答你的問題,使用左邊的複選標記來表明這一點。感謝回答者並保持網站清潔。 – ahsteele 2013-05-14 18:55:54

+0

嘰嘰喳喳的舉動! :)) – DrStrangeLove 2013-05-14 19:29:54

3

這樣做的最簡單方法是使用jQuery的包含選擇:

if($("*:contains('Hello World')").length > 0) 
    console.log('yeah baby'); 

這種方式也爲您提供了文本的容器元素。

+0

感謝您的幫助 – Sam 2013-05-14 18:31:12

+5

FWIW,這個特定的選擇器將使用Sizzle(因爲它不是一個本地支持的選擇器)並且將選擇頁面上的每個單獨元素,然後將循環*每個*元素檢查文本。這不完全...有效。 – James 2013-05-14 18:48:05

-1

嘗試.search() 事情是這樣的:

document.body.innerHTML.search("Done successfully!"); 

,而不是innerHTML的或者使用的textContent

+0

document.body沒有屬性「匹配」,您應該使用innerText(或textContent)來代替。 – 2013-05-14 18:25:53

+0

'body'不包含名爲'match'的函數。你是否正在考慮與正則表達式一起使用的'String.match'?如果是這樣,'身體'肯定不是一個字符串。 – 2013-05-14 18:26:34

+1

對不起,我自己發現了自己的錯誤,並將其編輯爲另一個解決方案 – Milchkanne 2013-05-14 18:29:38

相關問題