- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试根据页面上的 canvas
元素的数量来初始化自定义颜色选择器。我试图循环 canvasArray
并为每个索引 getContext 创建一个新图像,设置一个点击监听器,动态存储选定的颜色。
我遇到了未定义的数组属性的问题。例如:未捕获的类型错误:无法读取handleColorPickers 处未定义的属性“push”
。
每次我尝试将数据存储到任何数组时,我也尝试过 contextArray[i] = canvasArray[i[.getcontext('2d');
。 (上下文数组、图像数组、数据数组、rgbaArray)。
function handleColorPickers () {
var canvasArray, contextArray, imageArray, dataArray, rgbaArray = new Array();
// store each canvas in array
var canvasArray = document.getElementsByTagName( "canvas" );
// loop through all canvas elements on page
for ( var i = 0; i < canvasArray.length; i++ ) {
// get context of canvas element store dynamically
contextArray.push( canvasArray[i].getContext( "2d" ) );
// construct new image
imageArray.push( new Image( 250, 250 ) );
imageArray[i].onLoad = () => contextArray[i].drawImage( imageArray[i], 0, 0, imageArray[i].width, imageArray[i].height );
imageArray[i].src = "../img/color-wheel-opt.jpg";
canvasArray[i].onclick = function ( mouseEvent /* dynamic? */) {
// get color selection data
dataArray.push( contextArray[i].getImageData( mouseEvent.offsetX, mouseEvent.offsetY, 1, 1 ) );
rgbaArray.push( dataArray[i].data );
canvasArray[i].siblings( $( 'input' ) ).val( "rgba(" + rgbaArray[i][0] + "," + rgbaArray[i][1] + "," + rgbaArray[i][2] + "," + rgbaArray[i][3] + ")" );
//toggle visibility
canvasArray[i].parent().parent().toggle();
}
}
}
我希望将所有图像绘制到 Canvas 上,监听图像上的单击,捕获有关单击位置的数据,并在选择颜色后切换可见性。全部都是动态的,但是当我尝试定义它们时,“未定义”数组属性是问题。
如何动态定义所有这些数组?
最佳答案
主要问题是你的开场白:
var canvasArray, contextArray, imageArray, dataArray, rgbaArray = new Array();
您仅初始化最后一个数组 (rgbaArray
)。您需要单独声明所有数组:
var canvasArray = [], contextArray = [], imageArray = [], dataArray = [], rgbaArray = [];
您可以在下面看到它的演示:
var test, test2 = [];
console.log('test', test);
console.log('test2', test2);
var test3 = [], test4 = [];
console.log('test3', test3);
console.log('test4', test4);
关于javascript - 如何解决Javascript中未定义的数组属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54499179/
你能比较一下属性吗 我想禁用文本框“txtName”。有两种方式 使用javascript,txtName.disabled = true 使用 ASP.NET, 哪种方法更好,为什么? 最佳答案 我
Count 属性 返回一个集合或 Dictionary 对象包含的项目数。只读。 object.Count object 可以是“应用于”列表中列出的任何集合或对
CompareMode 属性 设置并返回在 Dictionary 对象中比较字符串关键字的比较模式。 object.CompareMode[ = compare] 参数
Column 属性 只读属性,返回 TextStream 文件中当前字符位置的列号。 object.Column object 通常是 TextStream 对象的名称。
AvailableSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。 object.AvailableSpace object 应为 Drive 
Attributes 属性 设置或返回文件或文件夹的属性。可读写或只读(与属性有关)。 object.Attributes [= newattributes] 参数 object
AtEndOfStream 属性 如果文件指针位于 TextStream 文件末,则返回 True;否则如果不为只读则返回 False。 object.A
AtEndOfLine 属性 TextStream 文件中,如果文件指针指向行末标记,就返回 True;否则如果不是只读则返回 False。 object.AtEn
RootFolder 属性 返回一个 Folder 对象,表示指定驱动器的根文件夹。只读。 object.RootFolder object 应为 Dr
Path 属性 返回指定文件、文件夹或驱动器的路径。 object.Path object 应为 File、Folder 或 Drive 对象的名称。 说明 对于驱动器,路径不包含根目录。
ParentFolder 属性 返回指定文件或文件夹的父文件夹。只读。 object.ParentFolder object 应为 File 或 Folder 对象的名称。 说明 以下代码
Name 属性 设置或返回指定的文件或文件夹的名称。可读写。 object.Name [= newname] 参数 object 必选项。应为 File 或&
Line 属性 只读属性,返回 TextStream 文件中的当前行号。 object.Line object 通常是 TextStream 对象的名称。 说明 文件刚
Key 属性 在 Dictionary 对象中设置 key。 object.Key(key) = newkey 参数 object 必选项。通常是 Dictionary 
Item 属性 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的&
IsRootFolder 属性 如果指定的文件夹是根文件夹,返回 True;否则返回 False。 object.IsRootFolder object 应为&n
IsReady 属性 如果指定的驱动器就绪,返回 True;否则返回 False。 object.IsReady object 应为 Drive&nbs
FreeSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。只读。 object.FreeSpace object 应为 Drive 对象的名称。
FileSystem 属性 返回指定的驱动器使用的文件系统的类型。 object.FileSystem object 应为 Drive 对象的名称。 说明 可
Files 属性 返回由指定文件夹中所有 File 对象(包括隐藏文件和系统文件)组成的 Files 集合。 object.Files object&n
我是一名优秀的程序员,十分优秀!