如何调用函数ready()中的函数
how to call function that is inside a function ready()?
我有一个函数准备(e),其中包含一个画布和一些其他函数。我想在画布外面做一个动作来调用ready(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:在函数ready(e)之前有一行代码。希望这些信息是有用的:(
this.addEventListener("DOMContentLoaded", ready, true);
EDIT3:这是html
中画布的代码<canvas id="myCanvas"></canvas>
在这种情况下"arraytwo"函数是一个私有函数你可以通过返回它或者使用闭包模式来调用它
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
为什么不把你的函数移到ready
范围之外呢?
function ready(e)
{
var canvas;
var ctx;
canvas = document.getElementById('myCanvas');
ctx = canvas.getContext('2d');
}
function arraytwo(){
alert("arraytwo");
}
arraytwo();
function ready(e)
{
var canvas;
var ctx;
canvas = document.getElementById('myCanvas');
ctx = canvas.getContext('2d');
function arraytwo()
{
alert("arraytwo");
}
ready.arraytwo=arraytwo;
}
ready.arraytwo();
虽然我上面说了你不应该这样做的原因。你可以通过添加
将arraytwo作为子对象来构建ready对象ready.arraytwo=arraytwo;
您可以使用事件https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Creating_and_triggering_events
在canvas外部块上调用事件,并在块中侦听它。
必须在公共命名空间中声明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();
还想指出,它是更好的实践使用window.onload=function(){arrayTwo();};
相关文章:
- jQuery加载的async和ready函数不工作
- 如何通过documents.ready函数中的javascript自动按键(ctrl+shift+i)
- 停止对document.ready函数的重定向/刷新
- ready函数在每个页面中触发
- 函数从$(document).ready外部调用在$(document).ready中定义的函数
- 如果没有document.ready(),我怎么能拥有多个javascript函数呢
- 重载像$(document).ready这样的函数是错误的
- $(document)中的多个javascript函数.ready不工作
- JavaScript执行从函数声明开始,而不是从$(document).ready()开始
- 编写没有加载和.ready函数的JavaScript
- 在 $( 文档 ).ready 函数中使用字符串名称调用 javascript 函数
- 调用 Document.ready 外部的 AJAX 函数
- 在CrossRider内部创建的全局变量's的appAPI.ready()函数对页面不可用
- jQuery的事件处理程序运行良好,但应该't,因为它's不在ready()函数中
- 函数在例如$(document).ready()上注册时的通知
- 如何在document.ready(function)时运行隐藏函数和动画
- 超越了在document.ready()中编写简单函数
- Javascript on click事件在函数中不起作用,但在document.ready()中起作用
- 为什么document.ready中的事件处理程序函数有效但无效;取出后不起作用
- 如何调用函数ready()中的函数