2016-07-27 10 views
0

Supouse ich die nächste Methode einen Wert in einer Zelle einer Tabelle einzufügen:Unter Verwendung der Methode in Javascript

var objeto = { 
    row: function(rowId){ 
     return { 
      cell: function(cellClass){ 
       return { 
        set: function(val){ 
        document.querySelector(rowId+' '+cellClass).innerHTML = val; 
        } 
       } 
       //Or just return the value 
      } 
     } 
    } 
}; 

Ich kenne den Wert einzufügen, ich brauche Verwendung:

objeto.row('#rowid').cell('.cellclass').set('hello'); 

Aber Wenn ich den Zellenwert verwenden möchte:

var data = objeto.row('#rowid').cell('.cellclass'); 

Was ist die Methode, die ich verwenden muss?

Antwort

0

können Sie die folgende Struktur verwenden:

var objeto2 = { 
    row: function(rowId){ 
     return { 
      cell: function(cellClass){ 
       return { 
        value: function(val){ 
         if (val) { 
          document.querySelector(rowId + ' ' + cellClass).innerHTML = val; 
         } else { 
          return document.querySelector(rowId + ' ' + cellClass).innerHTML; 
         } 
        } 
       } 
      } 
     } 
    } 
}; 

objeto.row('#rowid').cell('.cellclass').value('hello'); // set value 
objeto.row('#rowid').cell('.cellclass').value();  // get value 
+0

Aber hier löschen Sie die 'set' Funktion – Newton

+0

@Newton Ist es nicht besser so? Sie brauchen nur eine Funktion zum Setzen und Abrufen. – akinuri

0

Das Problem ist, Rückgabetyp einer Funktion festgelegt ist. Das bedeutet, wenn Objekt zurückgegeben wird, wird immer Objekt von dieser Funktion zurückgegeben. Was Sie tun wollen, ist, dass Sie versuchen, vom Polymorphismus zu profitieren, aber das kann nicht so gemacht werden.

var objeto = { 
    row: function(rowId){ 
     return { 
      cell: function(cellClass,newValue){ 
        this.set = function (newValue){ 
        if(typeof newValue != "undefined"){ 
         document.querySelector(rowId+' '+cellClass).innerHTML = val; 
        } 
        } 
       this.set(newValue); 
       return document.querySelector(rowId+' '+cellClass).innerHTML; 
       } 
       //Or just return the value 
      } 
     } 
    } 
}; 

So können Sie verwenden

var current = objeto.row ('# Rowid') Zelle (‘cellclass., 'Hallo'). oder

var currentValue = objeto.row ('# rowid'). Cell ('. Cellclass');