Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

My JavaScript code is this:

var i=0;
var ret=[];
ret[i][0]=newID;
ret[i][1]=jobTitle;
ret[i][2]=jobText;
ret[i][3]=jobEmail;
ret[i][4]=jobOrder;

These are all strings and all have value. I'm getting the error:

"Uncaught TypeError: Cannot set property '0' of undefined" on the first assignment: ret[i][0]=newID;

Also error at jsfiddle http://jsfiddle.net/Zf9rE/2/

what am I doing wrong?

share|improve this question

2 Answers 2

up vote 6 down vote accepted

You must create ret[i] before you try to add elements to it:

var i=0;
var ret=[];

ret[i] = []; // define ret[i]

ret[i][0]=newID;
ret[i][1]=jobTitle;
ret[i][2]=jobText;
ret[i][3]=jobEmail;
ret[i][4]=jobOrder;

Updated fiddle

Unless there is a reason to hard code the array indexes, you might prefer to either create an array literal (as @Rocket shows in the comments) or use Array.prototype.push():

ret[i].push(newID);
ret[i].push(jobTitle);
share|improve this answer
    
Or even better: ret[i] = [newID,jobTitle,jobText,jobEmail,jobOrder]; ;-) –  Rocket Hazmat May 20 at 16:26
2  
var ret = [ [newID,jobTitle,jobText,jobEmail,jobOrder] ]; ;) –  MrCode May 20 at 16:28

Another aproach:

var jobTitle="j title";
var jobText = "j desc";
var jobEmail="jemail";
var jobOrder="j order";
var newID="3";

var i=0;
var ret = new Array();
var matrix = new Array()

ret[0]=newID;
ret[1]=jobTitle;
ret[2]=jobText;
ret[3]=jobEmail;
ret[4]=jobOrder;

matrix[i] = ret;
console.log(matrix[0][0]);

Fiddle: http://jsfiddle.net/robertrozas/Zf9rE/6/

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.