javascript从另一个函数获取数组

javascript从另一个函数获取数组,javascript,Javascript,除了使myData成为全局变量外,如何在函数drawPieChart中获取myData?谢谢 我在考虑用html制作这样的东西:PieChart.getMyDataTable.takeData;或者类似的内容,根据您的编辑,您可以执行以下操作: <html> <body> var el = document.getElementById("tab"); var tab = Table(el, data);

除了使myData成为全局变量外,如何在函数drawPieChart中获取myData?谢谢
我在考虑用html制作这样的东西:PieChart.getMyDataTable.takeData;或者类似的内容,根据您的编辑,您可以执行以下操作:

<html>  
 <body>
            var el = document.getElementById("tab");
            var tab = Table(el, data);
            tab.showData();
            tab.takeData();
            var PieChart=drawPieChart(canvas);  
 </body>
</html>

<script> 
function Table(el, data) {
...
...
return{
showData: function(){
...
...
}
takeData: function(){
 var myData=new Array();
for (var i = 0; i < val2; i++) {
            myData[i] = document.getElementById('polja' + i).value;
}
}
...
...
};
}


function drawPieChart(canvas){
...
...
return{
 getmyData(

);
...
...
    };
    }
  </script>

首先,您的代码存在以下问题:

里面有一块JavaScript。这是不标准的,不允许的,而且会失败。具体来说,它将在页面上显示为文本,而不是作为JavaScript执行。所有JavaScript必须位于以下位置之一:内联标记、使用标记加载的外部文件、事件属性(如onload=…)或可以运行JavaScript的属性(如href=JavaScript:…)。。。在

HTML:

JS:


为了引入另一种可能的方法(比原型解决方案简单得多),您可以在takeData上获取OUT参数,然后将其作为参数传递给drawPieChart:

HTML:

JS:


您的代码中是否只有我或myData?而且,您的代码不正确。您没有在脚本标记中包含JS代码,而且您似乎也没有正确的JS语法。这对你有用吗?杰普,有用。我有大约200行代码,所以我只把我认为重要的东西放进去。但是也许我只是把它弄得更复杂了,Dok,你格式化代码的方式让它看起来你可以。
function Table(el, data) {
  var myData = new Array();  // Not global but accessible to every function that gets returned here
  return{
     // removed unnecessary code
     takeData: function(){
         for (var i = 0; i < val2; i++) {
            myData[i] = document.getElementById('polja' + i).value;
         } 
     },
     function drawPieChart(canvas){
         // Can access myData here
     }
  }
}
<div id="tab">
    <input id="polja0" value="def1"/>
    <input id="polja1" value="def2"/>
    <input id="polja2" value="def3"/>
</div>
function Table(el,data) {
    this.el = el;
    return this;
}
Table.prototype.showData = function() {
    // ...
};
Table.prototype.takeData = function() {
    this.myData = new Array();
    var val2 = this.el.children.length;
    for (var i = 0; i < val2; ++i)
        this.myData[i] = document.getElementById('polja'+i).value;
};
Table.prototype.drawPieChart = function(canvas) {
    alert(this.myData);
};

var el = document.getElementById('tab');
data = 'whatever';
var tab = new Table(el,data);
tab.showData();
tab.takeData();
canvas = 'whatever';
var PieChart = tab.drawPieChart(canvas);
<div id="tab">
    <input id="polja0" value="def1"/>
    <input id="polja1" value="def2"/>
    <input id="polja2" value="def3"/>
</div>
function Table(el,data) {

    return {
        showData:function() {
            // ...
        },
        takeData:function(OUT) {
            OUT.myData = new Array();
            var val2 = el.children.length; // closure
            for (var i = 0; i < val2; ++i)
                OUT.myData[i] = document.getElementById('polja'+i).value;
        }
    };

}

function drawPieChart(canvas,myData) {
    alert(myData);
}

var el = document.getElementById('tab');
data = 'whatever';
var tab = new Table(el,data);
tab.showData();
var takeDataOUT = {};
tab.takeData(takeDataOUT);
canvas = 'whatever';
var PieChart = drawPieChart(canvas,takeDataOUT.myData);