我正在尝试创建一个包含一堆画布元素的网页,每个画布元素都使用绘制的图片进行初始化,每个页面都有一个“下一个”按钮,该按钮在服务器端存储的其他文件中循环显示。为了使它起作用,我需要下一个按钮来了解当前在其相应的canvas元素中显示的图像。据我所知,该信息不能存储在单个按钮元素中,也不能存储在canvas元素中,因此让我觉得我需要一个全局变量来存储所有canvas元素以及它们当前显示的图像的名称,这样,当单击“下一步”按钮时,它可以查找其画布元素和图像,确定应绘制的下一个图像,然后绘制它。
但是,要查找页面中的所有canvas元素,我似乎需要window.onload
函数来确保仅在页面完全加载后才收集它们。但是,我找不到在该函数内部,外部和全局变量中获取所收集信息的方法。我看到一个人演示了如何将内容放到在函数外部创建的列表中,从而可以在函数内部更新列表的内容-由于此操作是通过按引用传递而不是通过传递-按值,该列表将在函数外部可用,并填充有适当的信息。但是,对于我的特定应用程序,这意味着我需要在创建列表时知道列表的长度...但是脚本只能在window.onload
函数中了解列表的长度。所以我似乎陷入了困境。
举一个最小的例子,下面是我不必预先指定数组长度的情况下要编写的代码。我用数字1表示每个画布都从第一个图像开始(在我的HTML和JavaScript的其余部分中,我可以将画布元素与数字配对,以便它们找到合适的图像进行绘制)。
var canList = new Array();
window.onclick = function() {
var cans = document.getElementsByTag("canvas");
for (i = 0; i < cans.length; i++) {
canList[i] = [cans[i],1];
}
}
我想要的行为是我能够在代码的其他地方使用
canList
。显然,这是行不通的,因为我没有在变量声明中指定canList
的长度,但是我只能通过先创建cans
变量才能发现这一点。如果将canList
变量声明移到函数内部,则在外部将不再可用。 最佳答案
您无需在创建时定义数组的长度。简单地说:
var array = new Array();
要么
var array = [];
然后,您可以根据需要定义以下任一索引:
array[n] = value;
关于javascript - HTML,JavaScript:从window.onclick的函数中获取值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42335314/