Cara mendapatkan tag di halaman html, jika saya tahu tag teks itu berisi. Misalnya:
<a ...>SearchingText</a>
javascript
jquery
innertext
Anton Kandybo
sumber
sumber
Jawaban:
Anda harus melintasi dengan tangan.
sumber
i < il
? Apa yang sedang dilakukan?Anda bisa menggunakan xpath untuk mencapai ini
Anda juga dapat mencari elemen yang mengandung beberapa teks menggunakan xpath ini:
sumber
Document.evaluate()
tidak seharusnya di browser IEvar xpath = "//a[text()='SearchingText']";
ini tidak berhasil, tetapivar xpath = "//a[contains(text(),'Searching')]";
ini berhasil. Waspadai karakter yang diekskapasi, seperti \ '\'.Menggunakan sintaksis paling modern yang tersedia saat ini, dapat dilakukan dengan sangat bersih seperti ini:
Atau dengan filter terpisah:
Secara alami, browser lawas tidak akan menangani ini, tetapi Anda dapat menggunakan transpiler jika diperlukan dukungan legacy.
sumber
Anda dapat menggunakan jQuery : berisi () Pemilih
sumber
Error: <![EX[["Tried to get element with id of \"%s\" but it is not present on the page","a:contains('SearchingText')"]]]> TAAL[1]
meskipun saya memiliki elemen dengan "SearchingText" di dalamnya.Tentu saja, cara yang agak lebih sederhana adalah:
Referensi:
Array.prototype.filter()
.Array.prototype.forEach()
.Array.prototype.slice()
.assessment ? ifTrue : ifFalse
) .Function.prototype.call()
.typeof
operator .sumber
Pendekatan fungsional. Mengembalikan array semua elemen yang cocok dan memangkas ruang di sekitar saat memeriksa.
Pemakaian
jika Anda mencari melalui tag yang berbeda yaitu bentang atau tombol
Tag nilai default = 'a' akan membutuhkan Babel untuk browser lama
sumber
a
akan mengandungstr
-el
akan dimasukkan ke dalamgetElementsByText
hasil; mana yang salahCukup masukkan substring Anda ke baris berikut:
HTML luar
HTML bagian dalam
Anda dapat menggunakan ini untuk mencari di seluruh dokumen dan mengambil tag yang berisi istilah pencarian Anda:
Penggunaan :
Berapa kali pengguna "T3rm1" disebutkan di halaman ini?
1
Berapa kali jQuery disebutkan?
3
Dapatkan semua elemen yang mengandung kata "Cybernetic":
sumber
Saya menemukan penggunaan sintaks yang lebih baru sedikit lebih pendek dibandingkan dengan jawaban yang lain. Jadi, inilah proposal saya:
JSfiddle.net
sumber
Untuk mendapatkan metode filter dari user1106925 bekerja di <= IE11 jika diperlukan
Anda dapat mengganti operator spread dengan:
[].slice.call(document.querySelectorAll("a"))
dan termasuk panggilan dengan
a.textContent.match("your search term")
yang bekerja dengan cukup rapi:
sumber
Array.from
bukan[].slice.call
. Misalnya:Array.from(document.querySelectorAll('a'))
Meskipun mungkin untuk memahami teks dalam, saya pikir Anda salah arah. Apakah string dalam itu dihasilkan secara dinamis? Jika demikian, Anda dapat memberikan tag pada kelas atau - lebih baik lagi - ID saat teks masuk ke sana. Jika statis, maka itu bahkan lebih mudah.
sumber
Anda dapat menggunakan a
TreeWalker
untuk memeriksa node DOM, dan mencari semua node teks yang berisi teks, dan mengembalikan orang tua mereka:sumber
Ini berhasil.
Mengembalikan array node yang berisi
text
.sumber
Saya pikir Anda harus sedikit lebih spesifik agar kami dapat membantu Anda.
Jika teksnya unik (atau benar-benar, jika tidak, tetapi Anda harus menjalankan array) Anda bisa menjalankan ekspresi reguler untuk menemukannya. Menggunakan PHP preg_match () akan bekerja untuk itu.
Jika Anda menggunakan Javascript dan dapat menyisipkan atribut ID, maka Anda dapat menggunakan getElementById ('id'). Anda kemudian dapat mengakses atribut elemen yang dikembalikan melalui DOM: https://developer.mozilla.org/en/DOM/element.1 .
sumber
Saya hanya perlu cara untuk mendapatkan elemen yang berisi teks tertentu dan inilah yang saya buat.
Gunakan
document.getElementsByInnerText()
untuk mendapatkan banyak elemen (beberapa elemen mungkin memiliki teks persis sama), dan gunakandocument.getElementByInnerText()
untuk mendapatkan hanya satu elemen (kecocokan pertama).Selain itu, Anda dapat melokalkan pencarian dengan menggunakan elemen (mis.
someElement.getElementByInnerText()
) Alih-alihdocument
.Anda mungkin perlu mengubah itu untuk membuatnya lintas-browser atau memenuhi kebutuhan Anda.
Saya pikir kode ini cukup jelas, jadi saya akan membiarkannya apa adanya.
sumber