2009-03-26 8 views
2

Vous ne savez pas si cela est possible dans Dojo ou JS pour qu'une fonction retourne un objet avec deux propriétés de vars? Mes codes ne fonctionnent pas, mais tout comme mon exigence:Comment retourner deux vars en tant que propriétés à partir d'une fonction Javascript

function getObj() 
{ 
    var var1 = 123; // 123 as simple case, but it could be a DOM node 
    var var2 = 345; // another DOM node 
    return {v1: var1, v2: var2}; // any way to get two values back? 
} 
.... 
var obj = getObj(); 
console.log("obj.v1: " + obj.v1 + "; obj.v2: " + obj.v2); // not working but possible? 

OK, voici ma vraie fonction:

dojo.requre("dojo.html"); 
.... 
function getNodes() 
{ 
    var node = dojo.byId("div1"); // static <div> in html 
    var childen = "<div id='chart' style='width: 10px; height: 10px'></div><div id='legend'></div>"; 
    dojo.html.set(node, children); // add two divs as children 
    var nodeChart = dojo.byId("chart"); 
    var nodeLegent = dojo.byId("legend"); 
    return {chart: nodeChart, legend: nodeLegend}; 
} 
... 
var nodes = getNodes(); 
var nodeChart = nodes.chart; // OK div#chart 
var nodeLegend = nodes.legend; // nodes.legend is div#legend, but nodeLegend is undefined! 
+0

Mon erreur! Désolé. J'ai utilisé nodeLegent par la suite, au lieu de nodeLegend. –

Répondre

6

Oui, cela est possible. Et je viens d'essayer votre code et il fonctionne très bien ...

<html> 
    <head> 
    <script> 
     function getObj(){ 
      var var1 = 123; // 123 as simple case, but it could be a DOM node 
      var var2 = 345; // another DOM node 
      return {v1: var1, v2: var2}; // any way to get two values back? 
     } 

     var obj = getObj(); 
     alert(obj.v1); 
    </script> 
    </head> 
    <body> 
    <h1>Test</h1> 
    </body> 
</html> 

EDIT:

Vous avez une faute de frappe ...

var nodeLegent = dojo.byId("legend"); 
return {chart: nodeChart, legend: nodeLegend}; 

Votre var est nommé nodeLegent, mais vous passez nodeLegend (undefined)

Ne te sens pas mal; tout le monde fait ce genre d'erreur. Nécessite simplement une autre paire d'yeux.

+0

Hummm, intéressant. Je peux avoir quelque chose de mal dans mes codes .... –

+0

Oui, c'est ce que je soupçonne. Vous avez probablement une syntaxe ailleurs. –

Questions connexes