I'm trying to initialize custom color pickers based on however many canvas elements are on a page. I'm trying to loop over canvasArray and for each index getContext, create a new Image, set a click listener, dynamically store selected color.
I'm having issues with undefined array properties.
such as: Uncaught TypeError: Cannot read property 'push' of undefined at handleColorPickers.
I've also tried contextArray[i] = canvasArray[i[.getcontext('2d'); for each time i've tried to store data to any of the arrays. (contextArray, imageArray, dataArray, 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();
}
}
}
i want all images drawn to the canvas, listen for a click on the image, capture data about the location of the click, and toggle visibility after color selection. all dynamically, however 'undefined' array properties are issues when im trying to define them.
How do i define all of these arrays dynamically?