Tôi hiện đang viết một accordion và chạy vào cùng một vấn đề như mô tả trong nextSibling difference between IE and FF? - đặc biệt là sự khác biệt giữa nextSibling/nextElementSibling của Microsoft và được thực hiện bởi mọi người khác.Tính di động của nextElementSibling/nextSibling
Vì nhiều lý do khác nhau, việc sử dụng jquery không phải là một tùy chọn. Cũng không phải là nhận được tất cả người dùng MS của tôi để nâng cấp lên MSIE9
Hiện nay tôi đang sử dụng đoạn mã sau để làm việc xung quanh vấn đề này:
// tr is a TR doc element at entry....
while (nthRow--) {
// for Chrome, FF tr=tr.nextElementSibling; for MSIE...tr=tr.nextSibling;
tr=tr.nextElementSibling ? tr.nextElementSibling : tr=tr.nextSibling;
if (!tr || tr.nodeName != "TR") {
break;
}
tr.style.display="";
}
Mà dường như để làm những gì tôi mong đợi trong MSIE6, FF và Chrome - tức là các phần tử NnthRow TR bên dưới TR ban đầu được hiển thị (trước đây là style.display = "none").
Nhưng điều này có khả năng có tác dụng phụ không mong muốn không?
(Tôi là một chút của một newbie với Javascript;)
Có - đó dường như là một giải pháp tốt hơn - có hiệu quả tương tự như câu trả lời của epascarello nhưng điều này là mạnh hơn một chút – symcbean
... chỉ không được trong khi (el && el.nodeType! == 1); ? – symcbean
@symcbean: Đúng vậy. Đã sửa. Nắm bắt tốt. : o) – user113716