what's wrong with this line?

M

Marco Alting

Hi

I used this for loop in my code, but I keep getting a syntax error on this
line:

for(var i=0;i<tr;i++){


Here's the rest of the function:

function checkForm(oForm){
var totalRecords = document.getElementById("cbsTotal");
variation = eval('oForm.' + 'variation' + 0 + '.value');
changeNumber = eval('oForm.' + 'changeNumber' + 0 + '.value');
changeDescription = eval('oForm.' + 'changeDescription' + 0 + '.value');
tr = totalRecords.value;
for(var i=0;i<tr;i++){
alert(variation);
if(variation <> 0){
if(changeNumber = ""){
if(changeDescription = ""){
alert("You have not entered a change number for variation" + i);
return false;
}
}
}

}
 
E

Erwin Moller

Marco said:
Hi

I used this for loop in my code, but I keep getting a syntax error on this
line:

for(var i=0;i<tr;i++){


Here's the rest of the function:

function checkForm(oForm){
var totalRecords = document.getElementById("cbsTotal");
variation = eval('oForm.' + 'variation' + 0 + '.value');
changeNumber = eval('oForm.' + 'changeNumber' + 0 + '.value');
changeDescription = eval('oForm.' + 'changeDescription' + 0 + '.value');
tr = totalRecords.value;

add this line:

alert ("tr="+tr+" and variation ="+variation+" and
changeNumber="+changeNumber+" and changeDescription="+changeDescription);

Do you get what you expected?
 
J

Janwillem Borleffs

Marco Alting said:
Hi

I used this for loop in my code, but I keep getting a syntax error on this
line:

for(var i=0;i<tr;i++){


Here's the rest of the function:

function checkForm(oForm){
var totalRecords = document.getElementById("cbsTotal");

That's probably because the 'cbsTotal' object doesn't have a value property,
so tr remains undefined.

BTW, don't use eval when you don't need to.

You can replace the lines:
variation = eval('oForm.' + 'variation' + 0 + '.value');
changeNumber = eval('oForm.' + 'changeNumber' + 0 + '.value');
changeDescription = eval('oForm.' + 'changeDescription' + 0 + '.value');

With:
variation = oForm.elements['variation0'].value;
changeNumber = oForm.elements['changeNumber0'].value;
changeDescription = oForm.elements['changeDescription0'].value;


JW
 
L

Lasse Reichstein Nielsen

Marco Alting said:
I used this for loop in my code, but I keep getting a syntax error on this
line:

for(var i=0;i<tr;i++){

The error is probably not on that line, but in that statement.
It is in the contents of the for statment:
if(variation <> 0){

if(changeNumber = ""){

Also, the comparison operator is "==", not "=". This is an assignment,
which changes "changeNumber" to the empty string. The value of an
assignment is the value that is assigned, in this case the empty string.
In an if condition, it is automatically converted to a boolean, and
the empty string converts to false.
if(changeDescription = ""){

ditto.

/L
 
L

Lasse Reichstein Nielsen

Janwillem Borleffs said:
You can replace the lines: [using eval]
With:
variation = oForm.elements['variation0'].value;
changeNumber = oForm.elements['changeNumber0'].value;
changeDescription = oForm.elements['changeDescription0'].value;

A very good advise. I would even change "oFrom" to
"document.forms['oForm']". That should work in all browser, current
and future (if they implement the W3C DOM).

/L
 
M

Marco Alting

Thanks for all the advises, I think the error was in the if statements.
Here's the working code:

function checkForm(oForm){
var totalRecords = document.getElementById("cbsTotal");
tr = totalRecords.value;
for(var i=0;i<tr;i++){
alert(eval('oForm.' + 'variation' + i + '.value'));
if(eval('oForm.' + 'variation' + i + '.value') != '0'){
if(eval('oForm.' + 'changeNumber' + i + '.value') == '0'){
if(eval('oForm.' + 'changeDescription' + 0 + '.value') == '0'){
alert("You have not entered a change number for variation" + i);
return false;
}
}
}
}
}


Janwillem Borleffs said:
Marco Alting said:
Hi

I used this for loop in my code, but I keep getting a syntax error on this
line:

for(var i=0;i<tr;i++){


Here's the rest of the function:

function checkForm(oForm){
var totalRecords = document.getElementById("cbsTotal");

That's probably because the 'cbsTotal' object doesn't have a value property,
so tr remains undefined.

BTW, don't use eval when you don't need to.

You can replace the lines:
variation = eval('oForm.' + 'variation' + 0 + '.value');
changeNumber = eval('oForm.' + 'changeNumber' + 0 + '.value');
changeDescription = eval('oForm.' + 'changeDescription' + 0 + '.value');

With:
variation = oForm.elements['variation0'].value;
changeNumber = oForm.elements['changeNumber0'].value;
changeDescription = oForm.elements['changeDescription0'].value;


JW
 
M

Marco Alting

When I comment out the for loop and add the alert, I get what I
expected, but the for loop still gives an error
 
G

Geir Klemetsen

Marco Alting said:
Hi

I used this for loop in my code, but I keep getting a syntax error on this
line:

for(var i=0;i<tr;i++){

What's "tr". Has it a valid number?
 
D

Douglas Crockford

function checkForm(oForm){
var totalRecords = document.getElementById("cbsTotal");
variation = eval('oForm.' + 'variation' + 0 + '.value');
changeNumber = eval('oForm.' + 'changeNumber' + 0 + '.value');
changeDescription = eval('oForm.' + 'changeDescription' + 0 + '.value');
tr = totalRecords.value;
for(var i=0;i<tr;i++){
alert(variation);
if(variation <> 0){
if(changeNumber = ""){
if(changeDescription = ""){
alert("You have not entered a change number for variation" + i);
return false;
}
}
}
}

I ran it through jslint and found these problems:

'<>' should be '!=='. This isn't Visual Basic.

When making an equality comparison, use '===', not '='

Also, you are making extremely bad use of the eval function. Never is eval. The
expression

eval('oForm.' + 'variation' + 0 + '.value')

probably wants to be

oForm['variation' + 0].value

If there is a chance that totalRecords is not an object, then wrap the for in
an if :

if (totalRecords) {
for(var i=0; i < tr; i++) {

http://www.crockford.com/javascript/lint.html
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,085
Messages
2,570,597
Members
47,218
Latest member
GracieDebo

Latest Threads

Top