Javascript help

A

Andy

I'm not sure why my checkbox code is not working as per intended. It
always keeps saying "Please select the department" even though I check
the department... appreciate any help.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Welcome to the Scripting Store</TITLE>
<META http-equiv=Content-Type content="text/html;
charset=windows-1252">
<SCRIPT>

// Banner Rotator logic

//Load banner elements into array
var banners = new
Array("banner1.jpg","banner2.jpg","banner3.jpg","banner4.jpg")

//Set banner counter to 0
var bnrCntr = 0

//Function that actually rotates the banner
function bancycle() {
bnrCntr = bnrCntr + 1
if (bnrCntr == 4) {
bnrCntr = 0
}
document.Banner.src = banners[bnrCntr]
setTimeout("bancycle()",3000)
}

//End Banner Rotator Logic

</SCRIPT>

<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY onload=bancycle()>
<TABLE borderColor=blue width=700 border=1>
<TBODY>
<TR>
<TD width="30%"><IMG name=Banner></TD>
<TD align=middle>
<H1>Welcome to the Scripting
Store</H1></TD></TR></TBODY></TABLE><BR>
<SCRIPT language=javascript>

document.writeln("Today is: ");
var nDate = new Date();
document.writeln(nDate);

var strName = new String();
strName = window.prompt("What is your Name?", "FirstNameOnly");
//document.write("Welcome " + strName + "<br>");

document.write("<h2>Hello " + strName + "</h2>");
var varStatus;
status = "Hello " + strName + " - Welcome to the Scripting Store";
//Year(Now());
</SCRIPT>

<P>Please select one of our departments listed below</P><BR><INPUT
onclick=locateDepartment() type=button value="Select Department"
name=btnSelect>
<BR>
<SCRIPT>

var varDept = new Array(3);
varDept[0] = "Books";
varDept[1] = "Computers";
varDept[2] = "Caffeine free products";
var numMax = varDept.length;
var strDept;

for (var i=0; i <numMax; ++i)
{
document.write("<p><input type='checkbox' value=" + + "name=" +
varDept + ">" + varDept + "</p>");
}
</SCRIPT>

<SCRIPT>

function locateDepartment()
{
var varselect = true;
var varMax = 3;
for (var x=0; x < varMax; ++x)
{
if (varDept[x].checked == true)
{
if ([x] == 0)
{
location.href='book.htm';
}
else if ([x] == 1)
{
location.href='Caffiene.htm';
}
else if ([x] == 2)
{
location.href='Computers.htm';
}
}
else
{
varselect = false;
}
}

if (varselect == false)
{
window.alert("Please Select a Department");
return false;
}

}

</SCRIPT>
</BODY></HTML>
 
H

Henry Delfanzo

I'm not sure why my checkbox code is not working as per intended. It
always keeps saying "Please select the department" even though I check
the department... appreciate any help.

I think it is a problem with your loop in the locateDepartment
function.

I commented out the location.href links and replaced them with alert
boxes. This did not work.

I commented out the end else loop. This stopped the alert box but
nothing happens with when Select Department button is press when a
checkbox is checked. It seems the loop automatically brings you to
this else statement.

I moved all functions within the <HEAD> tags, did not help.

Not sure either. Attempted for one hour without luck.

Good luck,

A Javascript newbie
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Welcome to the Scripting Store</TITLE>
<META http-equiv=Content-Type content="text/html;
charset=windows-1252">
<SCRIPT>

// Banner Rotator logic

//Load banner elements into array
var banners = new
Array("banner1.jpg","banner2.jpg","banner3.jpg","banner4.jpg")

//Set banner counter to 0
var bnrCntr = 0

//Function that actually rotates the banner
function bancycle() {
bnrCntr = bnrCntr + 1
if (bnrCntr == 4) {
bnrCntr = 0
}
document.Banner.src = banners[bnrCntr]
setTimeout("bancycle()",3000)
}

//End Banner Rotator Logic

</SCRIPT>

<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY onload=bancycle()>
<TABLE borderColor=blue width=700 border=1>
<TBODY>
<TR>
<TD width="30%"><IMG name=Banner></TD>
<TD align=middle>
<H1>Welcome to the Scripting
Store</H1></TD></TR></TBODY></TABLE><BR>
<SCRIPT language=javascript>

document.writeln("Today is: ");
var nDate = new Date();
document.writeln(nDate);

var strName = new String();
strName = window.prompt("What is your Name?", "FirstNameOnly");
//document.write("Welcome " + strName + "<br>");

document.write("<h2>Hello " + strName + "</h2>");
var varStatus;
status = "Hello " + strName + " - Welcome to the Scripting Store";
//Year(Now());
</SCRIPT>

<P>Please select one of our departments listed below</P><BR><INPUT
onclick=locateDepartment() type=button value="Select Department"
name=btnSelect>
<BR>
<SCRIPT>

var varDept = new Array(3);
varDept[0] = "Books";
varDept[1] = "Computers";
varDept[2] = "Caffeine free products";
var numMax = varDept.length;
var strDept;

for (var i=0; i <numMax; ++i)
{
document.write("<p><input type='checkbox' value=" + + "name=" +
varDept + ">" + varDept + "</p>");
}
</SCRIPT>

<SCRIPT>

function locateDepartment()
{
var varselect = true;
var varMax = 3;
for (var x=0; x < varMax; ++x)
{
if (varDept[x].checked == true)
{
if ([x] == 0)
{
location.href='book.htm';
}
else if ([x] == 1)
{
location.href='Caffiene.htm';
}
else if ([x] == 2)
{
location.href='Computers.htm';
}
}
else
{
varselect = false;
}
}

if (varselect == false)
{
window.alert("Please Select a Department");
return false;
}

}

</SCRIPT>
</BODY></HTML>
 
L

Lee

Andy said:
I'm not sure why my checkbox code is not working as per intended. It
always keeps saying "Please select the department" even though I check
the department... appreciate any help.

The <script> tag should have a type attribute:

var varDept = new Array(3);
varDept[0] = "Books";
varDept[1] = "Computers";
varDept[2] = "Caffeine free products";
var numMax = varDept.length;
var strDept;

for (var i=0; i <numMax; ++i)
{
document.write("<p><input type='checkbox' value=" + + "name=" +
varDept + ">" + varDept + "</p>");
}
</SCRIPT>

<SCRIPT>

function locateDepartment()
{
var varselect = true;
var varMax = 3;
for (var x=0; x < varMax; ++x)
{
if (varDept[x].checked == true)


You've defined varDept as an array of strings.
None of the elements of this array have an attribute
named "checked".

{
if ([x] == 0)

What are those square brackets supposed to mean?
That's a syntax error.
 
R

Richard Cornford

Lee wrote:
if ([x] == 0)

What are those square brackets supposed to mean?
That's a syntax error.

It is not a syntax error, it is an Array literal: Construct an new Array
with its first element set to the current value of x, compare the result
(the Array object) with the numeric value of zero and when it doesn't
equal zero do not execute the statement following - if -.

Completely valid javascript, just massively unlikely to be anything even
close to what is intended.

Richard.
 
M

Michael Winter

[snip]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

Some browsers don't treat that DOCTYPE properly. Include the URL. See
<HTML><HEAD><TITLE>Welcome to the Scripting Store</TITLE>

Hmm. That title worries me.
<META http-equiv=Content-Type
content="text/html; charset=windows-1252">

Don't use Microsoft character sets. Use standard ones. ISO-8859-1 (Latin
1) will be fine for English websites.

<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">

As Lee said: the type attribute is required for SCRIPT elements.

[snip]
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>

Using any Web authoring software produced by Microsoft (Notepad being the
only exception) is generally a mistake.
<BODY onload=bancycle()>

Validate your markup. See <URL:http://validator.w3.org/>.

[snip]

Mike
 
R

Robert

I'm not sure why my checkbox code is not working as per intended. It
always keeps saying "Please select the department" even though I check
the department... appreciate any help.


I made some comments in the text.

Do not know why [X] by itself wasn't giving an error. I changed them
to just x.

You may want to try out firefox. It has a dom inspector which will
let you see the generated html.

The following one-liner when pasted into the command line will also
display the generated html. (It looks for line ends which are OS
dependent.):

javascript:'<html><head><title>SourceFileListing<\/title><\/head><body><code><ol><li>'+(document.documentElement||document.body).innerHTML.replace(/&/g,%22&amp;%22).replace(/</g,%22&lt;%22).replace(/%20%20/g,%22&nbsp;%20%22).replace(/\r\n/g,%22<li>%22).replace(/\n/g,%22<li>%22).replace(/\r/g,%22<li>%22)+'<\/ol><\/code><\/body><\/html>';


Robert

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML><HEAD><TITLE>Welcome to the Scripting Store</TITLE>
<META http-equiv=Content-Type content="text/html;
charset=windows-1252">
<script type="text/javascript">

// Notice the change in the doctype and script tag.

/* Good that you post your javascript with short lines.
Seems like you have experience with programming.

*/

// Banner Rotator logic

//Load banner elements into array
// Here is another syntax for arrays...

var banners = [ "banner1.jpg",
"banner2.jpg",
"banner3.jpg",
"banner4.jpg" ];

//Set banner counter to 0
var bnrCntr = 0

//Function that actually rotates the banner
function bancycle() {
bnrCntr = bnrCntr + 1
if (bnrCntr == 4) {
bnrCntr = 0
}
document.Banner.src = banners[bnrCntr]
setTimeout("bancycle()",3000)
}

//End Banner Rotator Logic

</SCRIPT>

<!-- What is this. Be careful about using html generators and
Javascript. Be doubly careful with MS products. -->

<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>

<!-- need quote marks around event handler code
The ; is recommended. -->

<BODY onload="bancycle();">
<TABLE borderColor=blue width=700 border=1>
<TBODY>
<TR>
<TD width="30%"><IMG name=Banner></TD>
<TD align=middle>
<H1>Welcome to the Scripting
Store</H1></TD></TR></TBODY></TABLE><BR>

<!-- try to minimize javascript inline. Call a function. -->

<SCRIPT language=javascript>

document.writeln("Today is: ");
var nDate = new Date();
document.writeln(nDate);

var strName = new String();
strName = window.prompt("What is your Name?", "FirstNameOnly");
//document.write("Welcome " + strName + "<br>");

document.write("<h2>Hello " + strName + "</h2>");
var varStatus;
status = "Hello " + strName + " - Welcome to the Scripting Store";
//Year(Now());
</SCRIPT>

<!-- Add form tag. -->

<form name="myform">

<!-- I'd move the button below the check boxes. Watch you
eye movement for the why. -->

<P>Please select one of our departments listed below</P><BR><INPUT
onclick=locateDepartment() type=button value="Select Department"
name=btnSelect>
<BR>
<SCRIPT>

var varDept = new Array(3);
varDept[0] = "Books";
varDept[1] = "Computers";
varDept[2] = "Caffeine free products";

var numMax = varDept.length;
var strDept;

<!-- I'd go with varDept.length in the code. -->

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

/* Missing signal quotes for value and name.
Sometimes you need the quote marks and sometimes you
can luck out. So, allows do. */

document.write("<p><input type='checkbox' value='" + i + "' name='" +
varDept + "'>" + varDept + "</p>");
}
</SCRIPT>
</form>
<SCRIPT>

function locateDepartment()
{

/* I'm not sure that the loop saves you any code. */

var varselect = true;
var varMax = 3;
for (var x=0; x < varMax; ++x)
{

/* Try puting in alerts for debug. */

alert("x= " + x);

/* Need to reference the form */

if (document.forms["myform"].elements[varDept[x]].checked == true)
{
if (x == 0)
{
location.href='book.htm';
}
else if (x == 1)
{
location.href='Caffiene.htm';
}
else if (x == 2)
{
location.href='Computers.htm';
}
}
else
{
varselect = false;
}
}

if (varselect == false)
{
window.alert("Please Select a Department");
return false;
}

}

</SCRIPT>
</BODY></HTML>
 
H

Henry Delfanzo

I got the program to work by changing the input type from checkbox to
radio button. With the checkbox, if two boxes were checked, most
likely there would have been an error because the function could not
goto two links at the same time. (maybe pop-up window is the intention
but not sure).

I also took out the javascript form creation loop and moved the
locateDepartment() function to the <HEAD> tag.

HTH!

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>Welcome to the Scripting Store</TITLE>
<META http-equiv=Content-Type content="text/html;
charset=windows-1252">

<SCRIPT>

function locateDepartment()
{

if (document.forms[0].a[0].checked) {


location.href='book.htm';
return true;

}


else if (document.forms[0].a[1].checked) {


location.href='Computers.htm';
return true;

}

else {


location.href='Caffiene.htm';
return true;

}

}

</SCRIPT>


<SCRIPT>

// Banner Rotator logic

//Load banner elements into array
var banners = new
Array("banner1.jpg","banner2.jpg","banner3.jpg","banner4.jpg")

//Set banner counter to 0
var bnrCntr = 0

//Function that actually rotates the banner
function bancycle() {
bnrCntr = bnrCntr + 1
if (bnrCntr == 4) {
bnrCntr = 0
}
document.Banner.src = banners[bnrCntr]
setTimeout("bancycle()",3000)
}

//End Banner Rotator Logic

</SCRIPT>

<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY onload=bancycle()>

<TABLE borderColor=blue width=700 border=1>
<TBODY>
<TR>
<TD width="30%"><IMG name=Banner></TD>
<TD align=middle>
<H1>Welcome to the Scripting Store</H1>
</TD>
</TR>
</TBODY>
</TABLE>

<BR>
<SCRIPT language=javascript>

document.writeln("Today is: ");
var nDate = new Date();
document.writeln(nDate);

var strName = new String();
strName = window.prompt("What is your Name?", "FirstNameOnly");
//document.write("Welcome " + strName + "<br>");

document.write("<h2>Hello " + strName + "</h2>");
var varStatus;
status = "Hello " + strName + " - Welcome to the Scripting Store";
//Year(Now());

</SCRIPT>

<P>Please select one of our departments listed below</P>

<BR>

<form>

<INPUT onclick=locateDepartment() type=button value="Select
Department"
name=btnSelect>

<p><input type='radio' name='a' value='a1' checked>Books
<p><input type='radio' name='a' value='b1'>Computers
<p><input type='radio' name='a' value='c1'>CAffeine free Products

</form>

</BODY></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
473,754
Messages
2,569,522
Members
44,995
Latest member
PinupduzSap

Latest Threads

Top