71

I am dynamically adding columns to a table by using document.createElement("th")

var newTH = document.createElement('th');

Is there a way to set an onClick attribute for this so a user can delete the column by clicking on the header? Any help would be great. If this is not possible, is it possible to put something in

newTH.innerHTML

to make it work?

Brian Tompsett - 汤莱恩
  • 5,753
  • 72
  • 57
  • 129
daniel langer
  • 1,855
  • 2
  • 17
  • 20

4 Answers4

102
var newTH = document.createElement('th');
newTH.innerHTML = 'Hello, World!';
newTH.onclick = function () {
    this.parentElement.removeChild(this);
};

var table = document.getElementById('content');
table.appendChild(newTH);

Working example: http://jsfiddle.net/23tBM/

You can also just hide with this.style.display = 'none'.

trumank
  • 2,704
  • 3
  • 22
  • 31
17
var newTH = document.createElement('th');
newTH.setAttribute("onclick", "removeColumn(#)");
newTH.setAttribute("id", "#");

function removeColumn(#){
// remove column #
}
Arthur Choate
  • 513
  • 5
  • 20
15
var newTH = document.createElement('th');
newTH.onclick = function() {
      //Your code here
}
Ahmed Hegazy
  • 12,395
  • 5
  • 41
  • 64
Someth Victory
  • 4,492
  • 2
  • 23
  • 27
  • thanks, that creates the event! any ideas as to a simple way to hide that element within the function? It doesn't have an ID or class which makes it a bit difficult – daniel langer Jun 13 '12 at 14:56
10
var newTH = document.createElement('th');
newTH.addEventListener( 'click', function(){
  // delete the column here
} );
Sirko
  • 72,589
  • 19
  • 149
  • 183