Thêm/thay đổi kiểu phần tử trong mã là hành vi không tốt. Hôm nay bạn muốn thay đổi màu nền và ngày mai bạn muốn thay đổi hình nền và sau ngày mai bạn quyết định rằng nó cũng sẽ tốt đẹp để thay đổi biên giới.
Chỉ chỉnh sửa mã mỗi lần vì yêu cầu thiết kế thay đổi là một cơn đau. Ngoài ra, nếu dự án của bạn sẽ phát triển, việc thay đổi các tệp js sẽ càng đau đớn hơn. Nhiều mã hơn, đau hơn.
Cố gắng loại bỏ việc sử dụng kiểu mã hoá cứng, điều này sẽ giúp bạn tiết kiệm thời gian và nếu bạn viết, bạn có thể yêu cầu thực hiện tác vụ "thay đổi màu" cho người khác.
Vì vậy, thay vì thay đổi thuộc tính trực tiếp của kiểu, bạn có thể thêm/xóa lớp CSS trên các nút. Trong trường hợp cụ thể của bạn, bạn chỉ cần làm điều này cho nút cha - "div" và sau đó, tạo kiểu cho các subnodes thông qua CSS. Vì vậy, không cần phải áp dụng đặc tính phong cách cụ thể cho DIV và H2.
Một điểm đề xuất khác. Cố gắng không kết nối các nút được mã hóa cứng, nhưng hãy sử dụng một số ngữ nghĩa để thực hiện điều đó. Ví dụ: "Để thêm sự kiện vào tất cả các nút có nội dung của lớp".
Là một mùa hè tôi đặt ở đây mã mà tôi sẽ sử dụng cho các nhiệm vụ như:
//for adding a css class
function onOver(node){
node.className = node.className + ' Hover';
}
//for removing a css class
function onOut(node){
node.className = node.className.replace('Hover','');
}
function connect(node,event,fnc){
if(node.addEventListener){
node.addEventListener(event.substring(2,event.length),function(){
fnc(node);
},false);
}else if(node.attachEvent){
node.attachEvent(event,function(){
fnc(node);
});
}
}
// run this one when window is loaded
var divs = document.getElementsByTagName("div");
for(var i=0,div;div =divs[i];i++){
if(div.className.match('content')){
connect(div,'onmouseover',onOver);
connect(div,'onmouseout',onOut);
}
}
Và bạn CSS whould được như thế này:
.content {
background-color: blue;
}
.content.Hover{
background-color: red;
}
.content.Hover h2{
background-color : yellow;
}
tại sao từ chối các công cụ như jquery đó làm cho công việc dễ dàng hơn và kết quả đáng tin cậy hơn? –
Trong khi JQuery là một công cụ tuyệt vời, điều gì sẽ xảy ra nếu vì một lý do nào đó, jquery không còn tồn tại? IMO nó là tuyệt vời nếu ai đó muốn tìm hiểu ngôn ngữ thay vì công cụ. :) – Prozaker
@Prozaker - Điều gì sẽ xảy ra nếu một ngày nào đó internet ngừng hoạt động? Cũng giống như bạn đưa ra giả định cơ bản về internet tồn tại, bạn có thể giả định rằng jQuery tồn tại. Trong thực tế, bạn không phải giả định. Bạn chỉ có thể tải xuống và đưa nó vào mã nguồn của bạn. Bây giờ tỷ lệ chênh lệch của nó biến mất ít nhất là thấp như tỷ lệ phần còn lại của mã của bạn biến mất, ngoại trừ không thực sự, bởi vì có rất nhiều hàng triệu bản sao của jQuery tồn tại mà bản thân hành tinh sẽ phải nổ tung để xóa sạch jQuery một cách đáng tin cậy sự tồn tại. – ArtOfWarfare