Hello

I have problem with my Objects. My object have many props and method,
one of this is td (screen reprezentation of the object). I observe
click event to obj.td where I do many things on this object and change
td (screen reprezentation). My question : how find object where is
attach clicked td ?

Now I setAttribute to td something like obj_id, when td is clicked
first I read this attribute from td, find proper object by this id, do
what to do and finnaly change state of obj.td. This works fine but
when I have very many obj (like thousand), find object takes many time
(find object is longer then do what to do).


Here is simple example :

// example START

Event.observe(window, 'load', function() {
  onLoad();
});

var objTrs = [];
var msg = null;

function onLoad(){

  msg = document.createElement("div");
  msg.innerHTML = "Click on cell";
  $(document.body).appendChild(msg);

  var table = document.createElement("table");
  var tableBody = document.createElement("tbody");
  table.appendChild(tableBody);
  $(document.body).appendChild(table);
  table.border="1"

  for(var i = 0; i < 10; i++){
    var myTr = {};
    myTr.counter = 0;
    myTr.tr = document.createElement("tr");
    myTr.objTds = [];
    objTrs.push(myTr);
    for (var j = 0; j < 10; j++){
      var myTd = {};
      myTd.counter = 0;
      myTd.td = document.createElement("td");
      myTd.td.setAttribute('tr_id',i);
      myTd.td.setAttribute('td_id',j);
      myTd.td.innerHTML = myTr.counter + "_" + myTd.counter;
      myTr.objTds.push(myTd);
      myTr.tr.appendChild(myTd.td);

      Event.observe(myTd.td, 'click', function() {
        // find tr object in array
        var tr_id = this.getAttribute("tr_id");
        var myTr = objTrs[tr_id];
        myTr.counter++;
        // find proper td in myTr
        var td_id = this.getAttribute("td_id");
        var myTd = myTr.objTds[td_id];
        myTd.counter++;
        var msgTxt = "you click " + myTr.counter + " times on this TR
and " + myTd.counter + " on this TD";
        myTd.td.innerHTML = myTr.counter + "_" + myTd.counter;
        msg.innerHTML = msgTxt;
      });

    }
    tableBody.appendChild(myTr.tr);
  }

}

// example STOP

Best regards
maalek

--

You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to prototype-scriptacul...@googlegroups.com.
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en.


Reply via email to