15 Phương thức JavaScript để thao tác DOM cho nhà phát triển web
Là một nhà phát triển web, bạn thường xuyên cần phải thao tác DOM, mô hình đối tượng được sử dụng bởi các trình duyệt để chỉ định cấu trúc logic của các trang web và dựa trên cấu trúc này để kết xuất các phần tử HTML trên màn hình.
HTML định nghĩa cấu trúc DOM mặc định. Tuy nhiên, trong nhiều trường hợp, bạn có thể muốn thao tác điều này bằng JavaScript, thường là để thêm chức năng bổ sung đến một trang web.
Trong bài đăng này, bạn sẽ tìm thấy một danh sách 15 phương thức JavaScript cơ bản cái đó hỗ trợ thao tác DOM. Bạn có thể sử dụng các phương thức này thường xuyên trong mã của mình và bạn cũng sẽ bắt gặp chúng trong các hướng dẫn JavaScript của chúng tôi.
1. querySelector ()
Các querySelector ()
phương pháp trả về phần tử đầu tiên khớp với một hoặc nhiều bộ chọn CSS. Nếu không tìm thấy kết quả khớp, nó sẽ trả về vô giá trị
.
Trước querySelector ()
đã được giới thiệu, các nhà phát triển sử dụng rộng rãi getEuityById ()
phương pháp mà tìm nạp một phần tử với một chỉ định ID
giá trị.
Mặc dầu getEuityById ()
vẫn là một phương pháp hữu ích, nhưng với cái mới hơn querySelector ()
và querySelector ALL ()
phương pháp chúng tôi tự do các phần tử đích dựa trên bất kỳ bộ chọn CSS nào, do đó chúng tôi có sự linh hoạt hơn.
Cú pháp
var ele = document.querySelector (bộ chọn);
yêu tinh
- Yếu tố phù hợp đầu tiên hoặcvô giá trị
(nếu không có phần tử nào khớp với bộ chọn)bộ chọn
- một hoặc nhiều bộ chọn CSS, chẳng hạn như"#fooId"
,".fooClassName"
,". class1. class2"
, hoặc là". class1, .group2"
Mã ví dụ
Trong ví dụ này, đầu tiên đoạn một đoạn hai đoạn ba Kiểm tra không giống Các yếu tố phù hợp được trả về như một Ví dụ dưới đây sử dụng HTML giống như trước đây. Tuy nhiên, trong ví dụ này, tất cả các đoạn được chọn với đoạn một đoạn hai đoạn ba Sự kiện tham khảo những gì xảy ra với một phần tử HTML, chẳng hạn như nhấp, tập trung hoặc tải, mà chúng ta có thể phản ứng với JavaScript. Chúng ta có thể gán các hàm JS cho nghe cho các sự kiện này trong các yếu tố và làm một cái gì đó khi sự kiện đã xảy ra. Có ba cách bạn có thể gán một hàm cho một sự kiện nào đó. Nếu Phương pháp Dừng bong bóng sự kiện, tức là ngăn chặn bất kỳ người nghe sự kiện nào cho cùng loại sự kiện trong tổ tiên của thành phần. Để sử dụng tính năng này, bạn có thể sử dụng 2 cú pháp: Người nghe chỉ được gọi lần đầu tiên khi sự kiện xảy ra, sau đó nó sẽ tự động tách khỏi sự kiện và sẽ không được kích hoạt bởi nó nữa. Không thể dừng hành động mặc định của sự kiện bằng phương thức notifyDefault (). Trong ví dụ này, chúng tôi thêm một trình nghe sự kiện nhấp được gọi là Chỉ định Các Sử dụng cú pháp giống như đã nói ở trên Theo ví dụ mã chúng tôi sử dụng tại Các Sau này bạn có thể thêm yếu tố này vào trang web bằng cách sử dụng khác nhau phương thức chèn DOM, nhu la Với ví dụ sau, bạn có thể tạo một phần tử đoạn mới: Các Đứa trẻ được chèn có thể là một yếu tố mới được tạo, hoặc một đã tồn tại một. Trong trường hợp sau, nó sẽ được chuyển từ vị trí trước đó sang vị trí của đứa trẻ cuối cùng. Trong ví dụ này, chúng tôi chèn một Trong bản demo tương tác sau đây, các chữ cái từ Kiểm tra làm thế nào Các Trong ví dụ này, chúng tôi loại bỏ Các Trong ví dụ này, phần tử con Khi bạn phải tạo một yếu tố mới cần phải là giống như một yếu tố đã tồn tại trên trang web, bạn có thể chỉ cần tạo một bản sao của phần tử đã tồn tại sử dụng Trong ví dụ này, chúng tôi tạo một bản sao cho Kết quả là, Các Nếu phần tử con được tham chiếu không tồn tại hoặc bạn vượt qua một cách rõ ràng Trong ví dụ này, chúng tôi tạo một cái mới Bản demo tương tác này hoạt động tương tự như bản demo trước đây của chúng tôi thuộc về Các Nó tạo ra một Tại sao chúng ta không thêm các phần tử trực tiếp vào cây DOM? Vì chèn DOM gây ra thay đổi bố cục, và đó là một quá trình trình duyệt đắt tiền vì nhiều phần tử chèn thêm sẽ gây ra nhiều thay đổi bố cục. Mặt khác, thêm các yếu tố vào một Trong ví dụ này, chúng tôi tạo nhiều hàng bảng và ô với Kết quả là năm hàng - mỗi hàng chứa một ô có số từ 1 đến 5 là nội dung - sẽ được chèn vào trong bảng. Đôi khi bạn muốn kiểm tra các giá trị thuộc tính CSS của một yếu tố trước khi thực hiện bất kỳ thay đổi. Bạn có thể dùng Trong ví dụ này, chúng tôi nhận được và cảnh báo tính toán Các Trong ví dụ này, chúng tôi thêm Các Trong ví dụ này, chúng tôi cảnh báo giá trị của Các Trong ví dụ này, chúng tôi loại bỏ querySelector ()
Phương thức và màu của nó được đổi thành màu đỏ.
var firstDiv = document.querySelector ('div'); FirstDiv.style.color = 'đỏ';
Demo tương tác
querySelector ()
phương pháp trong bản demo tương tác sau đây. Chỉ cần nhập một bộ chọn phù hợp với những cái bạn có thể tìm thấy bên trong các hộp màu xanh (ví dụ:. #số ba
) và nhấp vào nút Chọn. Lưu ý rằng nếu bạn gõ .khối
, chỉ trường hợp đầu tiên của nó sẽ được chọn.2.
querySelector ALL ()
querySelector ()
chỉ trả về phiên bản đầu tiên của tất cả các yếu tố phù hợp, querySelector ALL ()
trả về tất cả các phần tử khớp với bộ chọn CSS đã chỉ định.Nút danh sách
đối tượng sẽ là một đối tượng trống nếu không tìm thấy phần tử phù hợp.Cú pháp
var eles = document.querySelector ALL (bộ chọn);
yêu tinh
- Một Nút danh sách
đối tượng với tất cả các yếu tố phù hợp như giá trị thuộc tính. Đối tượng trống nếu không tìm thấy kết quả khớp.bộ chọn
- một hoặc nhiều bộ chọn CSS, chẳng hạn như "#fooId"
, ".fooClassName"
, ". class1. class2"
, hoặc là ". class1, .group2"
Mã ví dụ
querySelector ALL ()
, và có màu xanh.
var đoạn = document.querySelector ALL ('p'); for (var p của đoạn văn) p.style.color = 'blue';
3.
addEventListener ()
foo ()
là một chức năng tùy chỉnh, bạn có thể đăng ký nó như một người nghe sự kiện nhấp (gọi nó khi phần tử nút được nhấp) theo ba cách:
var btn = document.querySelector ('nút'); btn.onclick = foo;
var btn = document.querySelector ('nút'); btn.addEventListener ('nhấp', foo);
addEventListener ()
(giải pháp thứ ba) có một số ưu; đó là tiêu chuẩn mới nhất - cho phép gán nhiều hơn một chức năng làm người nghe sự kiện cho một sự kiện - và đi kèm với một bộ tùy chọn hữu ích.Cú pháp
ele.addEventListener (evt, người nghe, [tùy chọn]);
yêu tinh
- Phần tử HTML mà người nghe sự kiện sẽ lắng nghe.phát triển
- Sự kiện được nhắm mục tiêu.người nghe
- Thông thường, một hàm JavaScript.tùy chọn
- (tùy chọn) Một đối tượng có một tập các thuộc tính boolean (được liệt kê bên dưới).Tùy chọn Điều gì xảy ra, khi nó được đặt thành thật
?chụp
ele.addEventListener (evt, người nghe, đúng)
ele.addEventListener (evt, listener, capt: true);
Một lần
thụ động
Mã ví dụ
foo
, để Thẻ HTML.
var btn = document.querySelector ('nút'); btn.addEventListener ('nhấp', foo); hàm foo () alert ('xin chào');
Demo tương tác
foo ()
chức năng tùy chỉnh như một người nghe sự kiện cho bất kỳ một trong ba sự kiện sau đây: đầu vào
, nhấp chuột
hoặc là Di chuột lên trên
& kích hoạt sự kiện đã chọn trong trường nhập dưới cùng bằng cách di chuột, nhấp hoặc nhập vào nó.4.
removeEventListener ()
removeEventListener ()
phương pháp tách người nghe sự kiện được thêm vào trước đó với addEventListener ()
phương pháp từ sự kiện nó đang lắng nghe.Cú pháp
ele.removeEventListener (evt, listener, [tùy chọn]);
addEventListener ()
phương pháp (ngoại trừ Một lần
tùy chọn đó bị loại trừ). Các tùy chọn được sử dụng rất cụ thể về việc xác định người nghe được tách ra.Mã ví dụ
addEventListener ()
, ở đây chúng tôi loại bỏ trình nghe sự kiện nhấp được gọi là foo
từ thành phần.
btn.removeEventListener ('nhấp', foo);
5.
createdEuity ()
createdEuity ()
phương pháp tạo một phần tử HTML mới sử dụng tên của thẻ HTML được tạo ra, chẳng hạn như 'p'
hoặc là 'div'
.AppendChild ()
(xem sau trong bài này).Cú pháp
document.createEuity (tagName);
tagName
- Tên của thẻ HTML bạn muốn tạo. Mã ví dụ
var pEle = document.createEuity ('p')
6.
appendChild ()
appendChild ()
phương pháp thêm một yếu tố như đứa trẻ cuối cùng đến phần tử HTML gọi phương thức này.Cú pháp
ele.appendChild (childEle)
yêu tinh
- Phần tử HTML mà con
được thêm vào như là đứa con cuối cùng của nó.con
- Phần tử HTML được thêm làm con cuối cùng của yêu tinh
.Mã ví dụ
yếu tố là con của một
appendChild ()
và đã nói ở trên createdEuity ()
phương pháp.
var div = document.querySelector ('div'); var strong = document.createEuity ('strong'); strong.textContent = 'Xin chào'; div.appendChild (mạnh);
Demo tương tác
#a
đến #r
là các yếu tố con của # phụ huynh-một
, # cha mẹ hai
, và # cha-ba
bộ chọn id.appendChild ()
phương pháp hoạt động bằng nhập một tên cha mẹ và một tên bộ chọn con vào các trường nhập bên dưới. Bạn cũng có thể chọn con thuộc về cha mẹ khác.7.
removeChild ()
removeChild ()
phương pháp xóa phần tử con đã chỉ định từ phần tử HTML gọi phương thức này.Cú pháp
ele.removeChild (childEle)
yêu tinh
- Phần tử cha của con
.con
- Yếu tố con của yêu tinh
.Mã ví dụ
yếu tố chúng tôi đã thêm khi còn nhỏ
appendChild ()
phương pháp. div.removeChild (mạnh);
số 8.
thayChild ()
thayChild ()
phương pháp thay thế một phần tử con bằng một phần tử khác thuộc về phần tử cha gọi phương thức này.Cú pháp
ele.replaceChild (newChildEle, oldChileEle)
yêu tinh
- Yếu tố phụ huynh mà con cái sẽ được thay thế.newChildEle
- Yếu tố con của yêu tinh
điều đó sẽ thay thế oldChildEle
.oldChildEle
- Yếu tố con của yêu tinh
, nó sẽ được thay thế bởi newChildEle
.Mã ví dụ
thuộc về
nhãn.
var em = document.createEuity ('em'); var strong = document.querySelector ('strong'); var div = document.querySelector ('div'); em.textContent = 'hi'; div.replaceChild (em, mạnh);
9.
cloneNode ()
cloneNode ()
phương pháp.Cú pháp
var dupeEle = ele.cloneNode ([sâu])
lừa đảo
- Bản sao của yêu tinh
thành phần.yêu tinh
- Phần tử HTML được sao chép.sâu
- (tùy chọn) Một giá trị boolean. Nếu nó được đặt thành thật
, lừa đảo
sẽ có tất cả các yếu tố con yêu tinh
nếu, nó được đặt thành sai
nó sẽ được nhân bản mà không có con của nó.Mã ví dụ
yếu tố với
cloneNode ()
, sau đó chúng tôi thêm nó vào appendChild ()
phương pháp. các yếu tố, cả với
xin chào
chuỗi như nội dung.
var strong = document.querySelector ('strong'); var copy = strong.cloneNode (đúng); var div = document.querySelector ('div'); div.appendChild (bản sao);
10.
insertB Before ()
insertB Before ()
phương pháp thêm một phần tử con được chỉ định trước một phần tử con khác. Phương thức được gọi bởi phần tử cha.vô giá trị
ở vị trí của nó, phần tử con được chèn vào được thêm vào là con cuối cùng của cha mẹ (tương tự như appendChild ()
).Cú pháp
ele.insertB Before (newEle, refEle);
yêu tinh
- Yếu tố phụ huynh.newEle
- Phần tử HTML mới được chèn.giới thiệu
- Một yếu tố con của yêu tinh
trước đó newEle
sẽ được chèn.Mã ví dụ
phần tử với một số văn bản bên trong, và thêm nó trước các
yếu tố bên trong
var em = document.createEuity ('em'); var strong = document.querySelector ('strong'); var div = document.querySelector ('div'); em.textContent = 'hi'; div.insertB Before (em, mạnh);
Demo tương tác
appendChild ()
phương pháp. Ở đây bạn chỉ cần nhập bộ chọn id của hai phần tử con (từ #a
đến #r
) vào các hộp nhập liệu và bạn có thể thấy cách insertB Before ()
phương thức di chuyển con được chỉ định đầu tiên trước thư hai.11.
createdDocumentFragment ()
createdDocumentFragment ()
phương pháp có thể không nổi tiếng như các phương pháp khác trong danh sách này, tuy nhiên là một phương pháp quan trọng, đặc biệt nếu bạn muốn chèn nhiều phần tử với số lượng lớn, chẳng hạn như thêm nhiều hàng vào một bảng.Tài liệuFragment
vật, mà thực chất là một nút DOM không phải là một phần của cây DOM. Nó giống như một bộ đệm nơi chúng ta có thể thêm và lưu trữ các phần tử khác (ví dụ: nhiều hàng) trước khi thêm chúng vào nút mong muốn trong cây DOM (ví dụ: vào bảng).Tài liệuFragment
vật không gây ra bất kỳ thay đổi bố cục, vì vậy bạn có thể thêm bao nhiêu phần tử vào nó theo ý muốn trước khi chuyển chúng vào cây DOM, gây ra thay đổi bố cục chỉ tại thời điểm này.Cú pháp
document.createDocumentFragment ()
Mã ví dụ
createdEuity ()
phương thức, sau đó thêm chúng vào một Tài liệuFragment
cuối cùng, thêm đoạn tài liệu đó vào HTML sử dụng
appendChild ()
phương pháp.
var bảng = document.querySelector ("bảng"); var df = document.createDocumentFragment (); cho (var i = 0; i<5; i++) var td = document.createElement("td"); var tr = document.createElement("tr"); td.textContent = i; tr.appendChild(td) df.appendChild(tr); table.appendChild(df);
12.
getComputingStyle ()
ele.style
tài sản để làm như vậy, tuy nhiên getComputingStyle ()
phương pháp đã được thực hiện chỉ cho mục đích này, nó trả về các giá trị được tính toán chỉ đọc của tất cả các thuộc tính CSS của một phần tử HTML được chỉ định.Cú pháp
var style = getComputingStyle (ele, [pseudoEle])
Phong cách
- Một CSSStyleDeclaration
đối tượng trả về theo phương thức. Nó chứa tất cả các thuộc tính CSS và giá trị của chúng yêu tinh
thành phần.yêu tinh
- Phần tử HTML trong đó các giá trị thuộc tính CSS được tìm nạp.giả
- (tùy chọn) Một chuỗi đại diện cho một phần tử giả (ví dụ:, ':sau'
). Nếu điều này được đề cập, thì các thuộc tính CSS của phần tử giả được chỉ định được liên kết với yêu tinh
sẽ được trả lại.Mã ví dụ
chiều rộng
giá trị của một getComputingStyle ()
phương pháp.
var style = getComputingStyle (document.querySelector ('div')); cảnh báo (style. thong);
13.
setAttribution ()
setAttribution ()
phương pháp hoặc thêm một thuộc tính mới thành phần tử HTML hoặc cập nhật giá trị của một thuộc tính đã tồn tại.Cú pháp
ele.setAttribution (tên, giá trị);
yêu tinh
- Phần tử HTML được thêm vào một thuộc tính hoặc thuộc tính nào được cập nhật.Tên
- Tên của thuộc tính.giá trị
- Giá trị của thuộc tính.Mã ví dụ
có thể nội dung
thuộc tính cho một setAttribution ()
phương thức, sẽ biến nội dung của nó có thể chỉnh sửa. var div = document.querySelector ('div'); div.setAttribution ('contenteditable', ")
14.
getAttribution ()
getAttribution ()
phương pháp trả về giá trị của một thuộc tính được chỉ định thuộc về một yếu tố HTML nhất định.Cú pháp
ele.getAttribution (tên);
yêu tinh
- Phần tử HTML thuộc tính được yêu cầu.Tên
- Tên của thuộc tính.Mã ví dụ
có thể nội dung
thuộc tính thuộc về getAttribution ()
phương pháp. var div = document.querySelector ('div'); cảnh báo (div.getAttribution ('contenteditable'))
15.
removeAttribution ()
removeAttribution ()
phương pháp xóa một thuộc tính nhất định của một yếu tố HTML cụ thể.Cú pháp
ele.removeAttribution (tên);
yêu tinh
- Phần tử HTML thuộc tính nào sẽ bị xóa.Tên
- Tên của thuộc tính.Mã ví dụ
có thể nội dung
thuộc tính từ var div = document.querySelector ('div'); div.removeAttribution ('contenteditable');