Sciter › Diễn đàn › Bản địa › Get All Elements with id starting with "prefix"
được gắn thẻ. C++
- Chủ đề này có 4 câu trả lời, 2 giọng nói và được cập nhật lần cuối bởi mike168m .
Đăng nhập Đăng ký Mất mật khẩu
Đang xem 2 chủ đề trả lời
Tác giả
bài viết
Tháng Giêng 11, 2017 lúc 6. 37 giờ sáng
mike168m
người tham gia
Xin chào, tôi đang cố gắng viết mã để trích xuất tất cả các nút có id bắt đầu bằng một tiền tố nhất định.
Một số nội dung như sau.Sau đó, trong C++
let elem = 5; // now elem is 5, not a reference to
alert[elem]; // 5 0Tôi đã thử findall[& counter, “selector”];
Cảm ơn
- Chủ đề này đã được sửa đổi 5 năm, 11 tháng trước bởi mike168m .
- Chủ đề này đã được sửa đổi 5 năm, 11 tháng trước bởi mike168m .
- Chủ đề này đã được sửa đổi 5 năm, 11 tháng trước bởi mike168m .
Tháng Một 11, 2017 lúc 8. 39 giờ sáng
Andrew
Chủ chốt
std::vector find_all_elements[sciter::dom::element root, const char* selector] { struct each_callback : public sciter::dom::callback { std::vector elements; virtual bool on_element[HELEMENT he] { elements.push_back[ sciter::dom::element[he] ]; return false; // keep going } }; each_callback cb; root.find_all[&cb,selector]; return each_callback.elements; }
Tháng Một 11, 2017 lúc 8. 28 giờ chiều
mike168m
người tham gia
Cảm ơn. Nó hoạt động cho div với các lớp nhưng không hoạt động cho các bộ chọn sau
div[id^='prefix_'] div[id~='prefix_'] div[id|='prefix_']
Tháng Một 11, 2017 lúc 9. 38 giờ chiều
Andrew
Chủ chốt
Hãy thử điều này trong scitter. người cũ
Test function self.ready[] { var list = self.$$[div[id^=exec_]]; $[#total].value = list.length; } Number of exec divs is
let elem = 5; // now elem is 5, not a reference to
alert[elem]; // 5 1 đó sử dụng chính xác chức năng giống nhưlet elem = 5; // now elem is 5, not a reference to
alert[elem]; // 5 2 ở trênTháng Một 12, 2017 lúc 9. 30 giờ chiều
mike168m
người tham gia
Cảm ơn. Nó hoạt động, sai lầm của tôi
Tác giả
bài viết
Đăng nhập Đăng ký Mất mật khẩu
Đang xem 2 chủ đề trả lời
- Bạn phải đăng nhập để trả lời chủ đề này
tên tài khoản.
Mật khẩu.
Giữ cho tôi đăng nhập
Đăng nhập
Thuộc tính điều hướng DOM tuyệt vời khi các phần tử gần nhau. Nếu họ không thì sao?
Có các phương pháp tìm kiếm bổ sung cho điều đó
Nếu một phần tử có thuộc tính
3, chúng ta có thể lấy phần tử đó bằng cách sử dụng phương thứcElement
4, bất kể nó ở đâuElementVí dụ
ElementNgoài ra, có một biến toàn cục được đặt tên bởi
3 tham chiếu đến phần tửElementElement…Đó là trừ khi chúng ta khai báo một biến JavaScript có cùng tên, thì nó sẽ được ưu tiên
let elem = 5; // now elem is 5, not a reference to
alert[elem]; // 5Vui lòng không sử dụng các biến toàn cục có tên id để truy cập các phần tử
Hành vi này được mô tả, nhưng nó được hỗ trợ chủ yếu để tương thích
Trình duyệt cố gắng giúp chúng tôi bằng cách trộn các không gian tên của JS và DOM. Điều đó tốt cho các tập lệnh đơn giản, được đưa vào HTML, nhưng nhìn chung không phải là điều tốt. Có thể có xung đột đặt tên. Ngoài ra, khi một người đọc mã JS và không có HTML trong chế độ xem, thì không rõ biến đó đến từ đâu
Ở đây trong hướng dẫn này, chúng tôi sử dụng
3 để tham chiếu trực tiếp một phần tử cho ngắn gọn, khi rõ ràng phần tử đó đến từ đâuElementTrong cuộc sống thực,
7 là phương pháp ưa thíchElement
3 phải là duy nhấtElement
3 phải là duy nhất. Chỉ có thể có một phần tử trong tài liệu vớiElement
3 đã choElementNếu có nhiều phần tử có cùng một
3, thì hành vi của các phương thức sử dụng nó là không thể đoán trước, e. g.Element
7 có thể trả lại ngẫu nhiên bất kỳ phần tử nào như vậy. Vì vậy, hãy tuân thủ quy tắc và giữ choElement
3 là duy nhấtElementChỉ
7, không phảiElementlet elem = 5; // now elem is 5, not a reference to
alert[elem]; // 5 5Phương thức
let elem = 5; // now elem is 5, not a reference to
alert[elem]; // 5 6 chỉ có thể được gọi trên đối tượnglet elem = 5; // now elem is 5, not a reference to
alert[elem]; // 5 7. Nó tìm kiếm
3 đã cho trong toàn bộ tài liệuElementCho đến nay, phương pháp linh hoạt nhất,
let elem = 5; // now elem is 5, not a reference to
alert[elem]; // 5 9 trả về tất cả các phần tử bên trong
40 khớp với bộ chọn CSS đã chodiv[id^='prefix_'] div[id~='prefix_'] div[id|='prefix_']
Ở đây chúng tôi tìm kiếm tất cả các phần tử
41 là phần tử con cuối cùngdiv[id^='prefix_'] div[id~='prefix_'] div[id|='prefix_']
4div[id^='prefix_'] div[id~='prefix_'] div[id|='prefix_']
Phương pháp này thực sự mạnh mẽ, bởi vì bất kỳ bộ chọn CSS nào cũng có thể được sử dụng
Cũng có thể sử dụng các lớp giả
Các lớp giả trong bộ chọn CSS như
42 vàdiv[id^='prefix_'] div[id~='prefix_'] div[id|='prefix_']
43 cũng được hỗ trợ. Chẳng hạn,div[id^='prefix_'] div[id~='prefix_'] div[id|='prefix_']
44 sẽ trả về tập hợp có các phần tử mà con trỏ hiện đang kết thúc [theo thứ tự lồng nhau. từdiv[id^='prefix_'] div[id~='prefix_'] div[id|='prefix_']
45 ngoài cùng đến cái lồng nhau nhất]div[id^='prefix_'] div[id~='prefix_'] div[id|='prefix_']
Lệnh gọi tới
46 trả về phần tử đầu tiên cho bộ chọn CSS đã chodiv[id^='prefix_'] div[id~='prefix_'] div[id|='prefix_']
Nói cách khác, kết quả giống như
47, nhưng cái sau đang tìm kiếm tất cả các phần tử và chọn một phần tử, trong khidiv[id^='prefix_'] div[id~='prefix_'] div[id|='prefix_']
48 chỉ tìm kiếm một phần tử. Vì vậy, nó nhanh hơn và cũng ngắn hơn để viếtdiv[id^='prefix_'] div[id~='prefix_'] div[id|='prefix_']
Các phương pháp trước đó là tìm kiếm DOM
Nó không tìm kiếm bất cứ thứ gì, nó chỉ kiểm tra xem
40 có khớp với bộ chọn CSS đã cho hay không. Nó trả vềdiv[id^='prefix_'] div[id~='prefix_'] div[id|='prefix_']
50 hoặcTest function self.ready[] { var list = self.$$[div[id^=exec_]]; $[#total].value = list.length; } Number of exec divs is
51Test function self.ready[] { var list = self.$$[div[id^=exec_]]; $[#total].value = list.length; } Number of exec divs is
Phương thức này rất hữu ích khi chúng ta đang lặp lại các phần tử [như trong một mảng hoặc thứ gì đó] và cố gắng lọc ra những phần tử mà chúng ta quan tâm
Ví dụ
5Test function self.ready[] { var list = self.$$[div[id^=exec_]]; $[#total].value = list.length; } Number of exec divs is
Tổ tiên của một phần tử là. cha mẹ, cha mẹ của cha mẹ, cha mẹ của nó, v.v. Tổ tiên cùng nhau tạo thành chuỗi cha mẹ từ phần tử đến đỉnh
Phương thức
52 tìm tổ tiên gần nhất khớp với bộ chọn CSS. Bản thânTest function self.ready[] { var list = self.$$[div[id^=exec_]]; $[#total].value = list.length; } Number of exec divs is
40 cũng được đưa vào tìm kiếmdiv[id^='prefix_'] div[id~='prefix_'] div[id|='prefix_']
Nói cách khác, phương thức
54 đi lên từ phần tử và kiểm tra từng phần tử cha. Nếu nó khớp với bộ chọn, thì quá trình tìm kiếm sẽ dừng lại và tổ tiên được trả vềTest function self.ready[] { var list = self.$$[div[id^=exec_]]; $[#total].value = list.length; } Number of exec divs is
Ví dụ
1ElementNgoài ra còn có các phương pháp khác để tìm kiếm các nút theo thẻ, lớp, v.v.
Ngày nay, chúng chủ yếu là lịch sử, vì
55 mạnh mẽ hơn và viết ngắn hơnTest function self.ready[] { var list = self.$$[div[id^=exec_]]; $[#total].value = list.length; } Number of exec divs is
Vì vậy, ở đây chúng tôi trình bày chúng chủ yếu để hoàn thiện, trong khi bạn vẫn có thể tìm thấy chúng trong các tập lệnh cũ
56 tìm kiếm các phần tử với thẻ đã cho và trả về bộ sưu tập của chúng. Tham sốTest function self.ready[] { var list = self.$$[div[id^=exec_]]; $[#total].value = list.length; } Number of exec divs is
57 cũng có thể là dấu saoTest function self.ready[] { var list = self.$$[div[id^=exec_]]; $[#total].value = list.length; } Number of exec divs is
58 cho “bất kỳ thẻ nào”Test function self.ready[] { var list = self.$$[div[id^=exec_]]; $[#total].value = list.length; } Number of exec divs is
59 trả về các phần tử có lớp CSS đã choTest function self.ready[] { var list = self.$$[div[id^=exec_]]; $[#total].value = list.length; } Number of exec divs is
10 trả về các phần tử có thuộc tínhElement
11 đã cho, trên toàn bộ tài liệu. Rất hiếm khi được sử dụngElement
Ví dụ
9ElementHãy tìm tất cả các thẻ
12 bên trong bảngElement
1ElementĐừng quên lá thư
13ElementCác nhà phát triển mới làm quen đôi khi quên chữ cái
13. Đó là, họ cố gắng gọiElement
15 thay vìElement
16ElementChữ cái
13 không có trongElementlet elem = 5; // now elem is 5, not a reference to
alert[elem]; // 5 6, vì nó trả về một phần tử duy nhất. Nhưng
19 trả về một tập hợp các phần tử, vì vậy cóElement
13 bên trongElementNó trả về một bộ sưu tập, không phải một phần tử
Một sai lầm phổ biến khác của người mới là viết
0ElementĐiều đó sẽ không hiệu quả, bởi vì nó lấy một tập hợp các đầu vào và gán giá trị cho nó thay vì cho các phần tử bên trong nó
Chúng ta nên lặp lại bộ sưu tập hoặc lấy một phần tử theo chỉ mục của nó, sau đó gán, như thế này
1ElementTìm kiếm các yếu tố
91Element
0ElementTất cả các phương pháp
92 trả về một bộ sưu tập trực tiếp. Các bộ sưu tập như vậy luôn phản ánh trạng thái hiện tại của tài liệu và “tự động cập nhật” khi nó thay đổiElementTrong ví dụ bên dưới, có hai tập lệnh
- Cái đầu tiên tạo một tham chiếu đến bộ sưu tập của
93. Hiện tại, chiều dài của nó làElement
94Element - Các tập lệnh thứ hai chạy sau khi trình duyệt gặp thêm một ________ 493, vì vậy độ dài của nó là ________ 496
1ElementNgược lại,
97 trả về một bộ sưu tập tĩnh. Nó giống như một mảng các phần tử cố địnhElementNếu chúng ta sử dụng nó thay thế, thì cả hai tập lệnh đều xuất ra
94Element
2ElementBây giờ chúng ta có thể dễ dàng nhận thấy sự khác biệt. Bộ sưu tập tĩnh không tăng sau khi xuất hiện một
99 mới trong tài liệuElementCó 6 phương pháp chính để tìm kiếm các nút trong DOM
Phương thứcTìm kiếm theo. Có thể gọi một phần tử không?Live?
55CSS-selector✔-Test function self.ready[] { var list = self.$$[div[id^=exec_]]; $[#total].value = list.length; } Number of exec divs is
97CSS-selector✔-Elementlet elem = 5; // now elem is 5, not a reference to
alert[elem]; // 5 6
3--Element
14Element
11-✔Element
19tag hoặcElement
17✔✔Element
18class✔✔ElementCho đến nay, được sử dụng nhiều nhất là
55 vàTest function self.ready[] { var list = self.$$[div[id^=exec_]]; $[#total].value = list.length; } Number of exec divs is
97, nhưngElement
01 có thể hữu ích hoặc được tìm thấy trong các tập lệnh cũElementbên cạnh đó
- Có
02 để kiểm tra xemElement
40 có khớp với bộ chọn CSS đã cho hay khôngdiv[id^='prefix_'] div[id~='prefix_'] div[id|='prefix_']
- Có
52 để tìm tổ tiên gần nhất khớp với bộ chọn CSS đã cho. Bản thânTest function self.ready[] { var list = self.$$[div[id^=exec_]]; $[#total].value = list.length; } Number of exec divs is
40 cũng được kiểm tradiv[id^='prefix_'] div[id~='prefix_'] div[id|='prefix_']
Và hãy đề cập đến một phương pháp khác ở đây để kiểm tra mối quan hệ cha-con, vì nó đôi khi hữu ích
Làm cách nào để lấy tất cả các phần tử có id trong JavaScript?
Cho một tài liệu HTML và nhiệm vụ là lấy tất cả ID của các phần tử DOM trong một mảng. .Trước tiên, hãy chọn tất cả các phần tử bằng bộ chọn $['*'], chọn mọi phần tử của tài liệuSử dụng. each[] để duyệt qua tất cả các phần tử và kiểm tra xem nó có ID khôngNếu nó có ID thì đẩy nó vào mảngLàm cách nào để lấy phần tử theo giá trị id trong JavaScript?
Nhận phần tử theo ID Sử dụng GetElementById[] . Gọi phương thức getElementById[] trên đối tượng tài liệu. Phương thức getElementById[] nhận một đối số là chuỗi. Giá trị chuỗi phải khớp với giá trị của thuộc tính ID được chỉ định trong Đánh dấu HTML.Làm cách nào để lấy phần tử theo id như trong JavaScript?
phương thức querySelector[] để lấy phần tử theo id bằng cách khớp một phần chuỗi, e. g. const el = tài liệu. querySelector['[id*="my-partial-id"]']. Phương thức trả về phần tử đầu tiên trong tài liệu khớp với bộ chọn được cung cấp. Đây là HTML cho các ví dụ trong bài viết này.Bạn sẽ truy xuất một phần tử có ID như thế nào?
Truy cập phần tử theo ID . Bạn có thể lấy phần tử theo ID bằng phương thức getElementById[] của đối tượng tài liệu . Trong Console, lấy phần tử và gán nó cho biến demoId. const demoId = tài liệu.Chủ Đề