bilbo.baggins

03-18-2009, 12:43 AM

I am relatively new to JavaScript, and I am having serious problems over a JavaScript function.

I have 2 x 2 dimensional arrays of data to display on the screen, each array being 18 x 18. The arrays and displaying them is working fine, I have 2 lots of X and Y variable (LocX1, LocY1, LocX2 and LocY2) which I use to reference the cells of the arrays.

I have 2 similar (but not identical) functions to move around these arrays using links on the screen.

Function 1 moves around the first array and is fine -

function MoveMapView(strDirection) {

if (strDirection == "North") {

LocY2 -= 1;

if (LocY2 < 0){

LocY2 = 0;

}

}

if (strDirection == "East") {

LocX2 += 1;

if (LocX2 > 17){

LocX2 = 17;

}

}

if (strDirection == "South") {

LocY2 += 1;

if (LocY2 > 17){

LocY2 = 17;

}

}

if (strDirection == "West") {

LocX2 -= 1;

if (LocX2 < 0){

LocX2 = 0;

}

}

//Call the display functions

..

..

}

However function 2 (below) adds one to the end of LocY2 as though it was a string when you click the link for 'South'.

function MoveSector(strDirection) {

if (strDirection == "North") {

LocY1 -= 1;

if (LocY1 < 0){

LocY1 = 0;

}

}

if (strDirection == "East") {

LocX1 += 1;

if (LocX1 > 17){

LocX1 = 17;

}

}

if (strDirection == "South") {

LocY1 += 1;

if (LocY1 > 17){

LocY1 = 17;

}

}

if (strDirection == "West") {

LocX1 -= 1;

if (LocX1 < 0){

LocX1 = 0;

}

}

//Sava data to the cookie

strText = "LocX1=" + LocX1;

document.cookie = strText;

strText = "LocY1=" + LocY1;

document.cookie = strText;

//Redirect

location.replace('load.asp');

}

At the top of the page I have a routine to make sure that the numbers are numbers (as below).

// Make sure Location data is a number, may have been turned into a string

// LocX1= LocX1 + 0;

// LoxY1= LocY1 + 0;

// LocX2= LocX2 * 1;

// LoxY2= LocY2 * 1;

LocX1= Number (LocX1);

LoxY1= Number (LocY1);

LocX2= Number (LocX2);

LoxY2= Number (LocY2);

As you can see, I have tried multiplying the variable by 1, adding zero and using the Number command. All other directions work fine and all links are identical, just passing a different 'direction' through an onClick.

I know I am probably making a very simple and obvious mistake, but ANY help is appreciated. At this rate I will have no hair as well as no life!

Thanks

P.s. I miss placed this post before, and it was sugested I re-check the links that set the functions off. They are all identical (all 8), except for the 'north' 'south' etc. bit.

I have 2 x 2 dimensional arrays of data to display on the screen, each array being 18 x 18. The arrays and displaying them is working fine, I have 2 lots of X and Y variable (LocX1, LocY1, LocX2 and LocY2) which I use to reference the cells of the arrays.

I have 2 similar (but not identical) functions to move around these arrays using links on the screen.

Function 1 moves around the first array and is fine -

function MoveMapView(strDirection) {

if (strDirection == "North") {

LocY2 -= 1;

if (LocY2 < 0){

LocY2 = 0;

}

}

if (strDirection == "East") {

LocX2 += 1;

if (LocX2 > 17){

LocX2 = 17;

}

}

if (strDirection == "South") {

LocY2 += 1;

if (LocY2 > 17){

LocY2 = 17;

}

}

if (strDirection == "West") {

LocX2 -= 1;

if (LocX2 < 0){

LocX2 = 0;

}

}

//Call the display functions

..

..

}

However function 2 (below) adds one to the end of LocY2 as though it was a string when you click the link for 'South'.

function MoveSector(strDirection) {

if (strDirection == "North") {

LocY1 -= 1;

if (LocY1 < 0){

LocY1 = 0;

}

}

if (strDirection == "East") {

LocX1 += 1;

if (LocX1 > 17){

LocX1 = 17;

}

}

if (strDirection == "South") {

LocY1 += 1;

if (LocY1 > 17){

LocY1 = 17;

}

}

if (strDirection == "West") {

LocX1 -= 1;

if (LocX1 < 0){

LocX1 = 0;

}

}

//Sava data to the cookie

strText = "LocX1=" + LocX1;

document.cookie = strText;

strText = "LocY1=" + LocY1;

document.cookie = strText;

//Redirect

location.replace('load.asp');

}

At the top of the page I have a routine to make sure that the numbers are numbers (as below).

// Make sure Location data is a number, may have been turned into a string

// LocX1= LocX1 + 0;

// LoxY1= LocY1 + 0;

// LocX2= LocX2 * 1;

// LoxY2= LocY2 * 1;

LocX1= Number (LocX1);

LoxY1= Number (LocY1);

LocX2= Number (LocX2);

LoxY2= Number (LocY2);

As you can see, I have tried multiplying the variable by 1, adding zero and using the Number command. All other directions work fine and all links are identical, just passing a different 'direction' through an onClick.

I know I am probably making a very simple and obvious mistake, but ANY help is appreciated. At this rate I will have no hair as well as no life!

Thanks

P.s. I miss placed this post before, and it was sugested I re-check the links that set the functions off. They are all identical (all 8), except for the 'north' 'south' etc. bit.