Hinzufügen addEventListener einer angeklickten Zelle in der Tabelle um die Farbe zu ändern

Ich bin erstellen einer dynamischen Tabelle mit drei Spalten und mehreren Zeilen. Ich möchte in der Lage sein, um Sie auf die letzten Zellen in jeder Zeile und die Zeile ausgewählt werden, die zeigen eine bestimmte Farbe. Ich versuche, das so gut wie sicher, dass, wenn eine andere Zelle ausgewählt ist, bereits wird es wieder abwählen. Ich habe ein paar Fragen, die nicht genau wissen, was zu tun ist. Ich kann erstellen eine onclick-alert-Nachricht, die funktioniert, aber keinen Erfolg mit der Hg Farbe. Anregungen sind hilfreich. Funktion createCell sollten, wo dies gerichtet ist.

<html>
<br/><br/></p>
<table id="my_table" align="center" cellspacing="0" cellpadding="0" border="0">
 <tr>
<td>Name</td>
<td>Age</td>
<td>Sex</td>
</tr>

 </table>
<p></center></p>
<script type="text/javascript" language="javascript">

 function appendRow(){


var names = ["Paul", "Mike", "Linda"];
var ages = ["16", "23", "44"];
var male_female = ["M", "M", "F"];
var tbl = document.getElementById('my_table'); //table reference
//append table row
var id;
var z=1;
for(k=0;k<names.length;k++){    
var row = tbl.insertRow(tbl.rows.length);


    var j = tbl.rows.length - 2;
    for (var i=0;i<tbl.rows[0].cells.length;i++) {
        id=z++;
          var cell_text = '';
          if (i == 0) {
                 cell_text = names[j];
          } else if (i == 1) {
                 cell_text = ages[j];
          } else if (i == 2) {
                 cell_text = male_female[j];
          }
        createCell(id, row.insertCell(i), cell_text, 'row');

    }


  }


}

function createCell(id, cell, text, style){

var div = document.createElement('div'); //create DIV element

var txt = document.createTextNode(text); //create text node
if(id % 3 == 0)
{
          cell.setAttribute('onclick', 'alert("hello")');    //for testing purposes
      cell.addEventListener("click", clickCell, false);
}
div.appendChild(txt);                    //append text node to the DIV
div.setAttribute('class', style);        //set DIV class attribute
div.setAttribute('className', style);    //set DIV class attribute for IE (?!)
cell.appendChild(div);            //append DIV to the table cell
}

  function clickCell()
 {
if(e)
  e.setAttribute("bgColor","purple");

 if(e != this){
    e = this;
    e.setAttribute("bgColor","blue");
 }else{
   e = null;
  }
 }      





 </script>
<BODY onload="appendRow()">

<style>
table#my_table{border-collapse:collapse;}
 table#my_table td{width:50px;height:27px;border:1px solid #D3D3D3;font-size:10pt;text-align:center;padding:0;}
  .append_row{background-color:#FFD6D6;border:1px #ccc solid;}
 </style>
 </body>
 </html> 
Was ist e im clickCell? Ich kann es nicht finden, erklärte überall. this in der Funktion beziehen sich auf den window element. addEventListener existiert nicht im IE übrigens (afaik).
Die Wahrheit ist, ich weiß nicht genau, was ich Tue. Konnte nicht finden jede Bezugnahme auf diese Art von anrufen, so dass ich nur warf einige Sachen drin.

InformationsquelleAutor cameron213 | 2010-09-18

Schreibe einen Kommentar