2013-04-13 95 views
2

我正在構建一個表。我需要一個<td>的表更改它的屬性classsomeattribute直到鼠標懸停。通過onmouseover更改td的類屬性

應該是怎麼回事?

代碼:

var table = document.createElement('table'); 
for (var i = 1; i <=10; i++) 
{ 
    var tr = document.createElement('tr'); 
    tr.setAttribute('id',i) 
    table.appendChild(tr); 
    for (var j = 1; j <=15; j++) 
    { 
     var td = document.createElement('td'); 
     td.setAttribute('id',j); 
     // Here: 
     td.OnMouseOver = new function() 
     { 
      td.setAttribute("class","new"); 
     }; 
     tr.appendChild(td); 
    }; 
}; 

document.getElementById("grid").innerHTML = ''; 
document.getElementById("grid").appendChild(table); 
+1

'td.onmouseover =函數(){ ' – Musa

+1

這是jQuery早餐吃的東西。 –

+0

你不應該在循環中創建函數,它只會混淆你。像這裏'td.setAttribute(「class」,「new」);'只適用於最後創建的'td' – user2264587

回答

0

你是相當接近。

在您的onmouseover函數中使用關鍵字this而不是td,這是您的函數無法訪問的。另外,您不需要使用關鍵字new來定義一個函數。

td.onmouseover = function() { 
     this.setAttribute("class", "new"); 
    }; 

代碼:

var table = document.createElement('table'); 
for (var i = 1; i <= 10; i++) { 
    var tr = document.createElement('tr'); 
    tr.setAttribute('id', i) 
    table.appendChild(tr); 
    for (var j = 1; j <= 15; j++) { 
     var td = document.createElement('td'); 
     td.setAttribute('id', j); 
     td.innerHTML = '&nbsp;'; 
     td.onmouseover = function() { 
      this.setAttribute("class", "new"); 
     }; 
     tr.appendChild(td); 
    }; 
}; 

document.getElementById("grid").innerHTML = ''; 
document.getElementById("grid").appendChild(table); 

http://jsfiddle.net/samliew/VnkHB/10/

0

如果你確實想使用jQuery:

$('table td').mouseover(function() { 
    $(this).addClass('new'); 
}); 

這類new添加到任何<td>元素在任何<table>mouseover事件。

0

而不jQuery的:

function mouseover() { 
    this.setAttribute("class", "new"); 
    return true; 
} 

var table = document.createElement('table'); 
var tr, td; 
for (var i = 1; i <= 10; i++) { 
     tr = document.createElement('tr'); 
     tr.setAttribute('id', 'td'+i); 
     table.appendChild(tr); 
     for (var j = 1; j <= 15; j++) { 
      td = document.createElement('td'); 
      td.setAttribute('id', 'tr'+j); 
      // Here: 
      td.onmouseover = mouseover; 
      td.innerText = ".."; 
      tr.appendChild(td); 
     } 
} 

document.getElementById("grid").innerHTML = ''; 
document.getElementById("grid").appendChild(table); 

功能被移動到外循環,IDS是前綴,以避免碰撞

與jQuery:

function mouseover() { 
    this.setAttribute("class", "new"); 
    return true; 
} 

function nNewElements(tag, idPrefix, n) { 
    var result = []; 
    for (var i = 1; i <= n; i++) { 
     result. 
     push($("<" + tag + ">"). 
     attr("id", idPrefix + i)[0]); 
    } 
    return $(result); 
} 

$(document).ready(function() { 
    $("#grid"). 
    html(''). 
    append('<table>'); 

    nNewElements("tr", "row", 10). 
    appendTo("table"). 
    each(function() { 
     nNewElements("td", "data", 15). 
     mouseover(mouseover). 
     text(".."). 
     appendTo($(this)); 
    }); 
});