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