我有一个功能准备好(e)里面有一个画布和一些其他功能。 我想在画布外面做一个动作来调用准备好的函数(e)。我怎样才能做到这一点?非常感谢!!
下面是我的代码的简化版本..我想在函数ready(e)之外调用arraytwo()...
function ready(e)
{
var canvas;
var canvasWidth;
var canvasHeight;
var ctx;
canvas = document.getElementById('myCanvas');
canvasWidth = 1100 ;
canvasHeight = 1200;
ctx = canvas.getContext('2d');
function arraytwo()
{alert("arraytwo");}
}
arraytwo();
编辑:对不起,我应该澄清一下,我在arraytwo中使用的函数/信息/数据必须在画布中使用。 alert()只是一个例子。所以我不能把它放在外面(e)。
EDIT2:在功能就绪(e)之前有一行代码。希望这些信息有用:(
this.addEventListener("DOMContentLoaded", ready, true);
EDIT3:这是html中画布的代码
<canvas id="myCanvas"></canvas>
答案 0 :(得分:1)
在这种情况下,“arraytwo”函数是一个私有函数,您可以通过返回它或使用Closure模式
来调用它 function ready(e)
{
var canvas;
var ctx;
// canvas = document.getElementById('myCanvas');
// ctx = canvas.getContext('2d');
return {
arraytwo:function(){
alert("arraytwo");
}
}
}
v = ready() // call your outer function
v.arraytwo()// call your closures function
答案 1 :(得分:0)
为什么不将您的功能移到ready
范围之外?
function ready(e)
{
var canvas;
var ctx;
canvas = document.getElementById('myCanvas');
ctx = canvas.getContext('2d');
}
function arraytwo(){
alert("arraytwo");
}
arraytwo();
答案 2 :(得分:0)
function ready(e)
{
var canvas;
var ctx;
canvas = document.getElementById('myCanvas');
ctx = canvas.getContext('2d');
function arraytwo()
{
alert("arraytwo");
}
ready.arraytwo=arraytwo;
}
ready.arraytwo();
&#13;
虽然我在上面说明了你不应该这样做的原因。您可以通过添加
将arraytwo添加为子项来构建您的对象ready.arraytwo=arraytwo;
将在全球范围内实现这种可变性。
答案 3 :(得分:-1)
您可以使用此事件 https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events
在块外的画布上调用事件,并在块中监听它。
答案 4 :(得分:-1)
您必须在公共命名空间中声明arraytwo()。通过将它放在函数ready()中,它只存在于ready()的范围内。没有理由在函数内声明一个函数,除非它只用在父函数的上下文和范围内。例如,如果您有两个函数,这两个函数都具有不同的同名方法,并且希望它们访问父函数范围内的变量,那么您将嵌套它们。在这种情况下,嵌套不是正确的方法。
var canvas;
var ctx;
function ready(e)
{
canvas = document.getElementById('myCanvas');
ctx = canvas.getContext('2d');
}
function arraytwo()
{
alert("arraytwo");
return arrayTwoData;
}
var arrayTwoData=arraytwo();
&#13;
还想指出使用window.onload = function(){arrayTwo();};
更好的做法