...

View Full Version : Using arrays to manipulate results of check boxes in a form.



Holdenjerm
03-02-2012, 06:16 PM
Hello, I am very new to javascript and coding in general. I had a few programming courses 10 years ago in engineering school but never stuck with it.

My larger goal is to create a website with 20 check boxes which the user can select from. When they hit the submit button, the java script will read which boxes are selected do a probability calculation (each of the 20 options will multiply a variable by a different percent and the end result will be displayed.

As I said my coding is limited and by looking at other code on websites I liked and reading a few tutorials I have came up with a working html form and JS that uses the following two functions to read and display my results.



<SCRIPT LANGUAGE="JavaScript">
function getSelected(opt) {
var selected = new Array();
var index = 0;
for (var intLoop = 0; intLoop < opt.length; intLoop++) {
if ((opt[intLoop].selected) ||
(opt[intLoop].checked)) {
index = selected.length;
selected[index] = new Object;
selected[index].value = opt[intLoop].value;
selected[index].index = intLoop;
}
}
return selected;
}

function outputSelected(opt) {
var sel = getSelected(opt);
var strSel = "";
for (var item in sel)
strSel += sel[item].value + "\n";
alert("Selected Items:\n" + strSel);
}
</SCRIPT>


Here is an example of one of the form checkbox elements

<p><input type="checkbox" name="chkboxarray" value="C" id="C"> : <label for="cb2">C<br></label></p><TD>

the function is called from the form button as

<INPUT TYPE=BUTTON VALUE="Submit"
ONCLICK="outputSelected(this.form.chkboxarray);">

Now that I have given you the background information. I am trying to read the results of the form and do the probability calculation. My basic logic is
if ? is checked then multiply prob by x
I was thinking of doing this for all 20 values.

Again I am very new to this, but I think this should work

if (selected.indexOf(C) != -1) {
prob = prob * 0.20 }

but the debugger keeps telling me that 'selected" is undefined.

I can't find the issue I am new to arrays . Is there a better more efficient way?

Thanks


Jeremy


P.S. If it is helpful I can post the entire code including the HTML, just let me know.

ckeyrouz
03-02-2012, 06:26 PM
Post the code that is returning your error.

Holdenjerm
03-02-2012, 06:46 PM
Thank you for the reply



function probability() {
var prob = 1;
if (selected.indexOf(C) != -1) {prob = prob * 0.20 } ;
alert(+ prob)}



This is the problem function it returns "selected is undefined'

selected is defined in the getSelected function
Do I need to bury this code into getSelected?


Again, thanks for the reply

Jeremy

Old Pedant
03-03-2012, 01:08 AM
A variable declared inside a function is *ONLY* available within that function.

To make it available to other code, move the declaration outside of any function.

ALSO: The indexOf method is only applicable to strings. Your selected variable is not a string. See below.




<script type="text/javascrip"> <!-- language= is obsolete -->
var selected = null; // delaration is now page scope

function getSelected(opt) {
selected = new Array(); // **OMIT** the var keyword here!
var index = 0;
...
}

...
function probability() {
if ( selected == null )
{
alert("you must push the submit button first");
return;
}
var prob = 1;
if (selected[C] != -1) {prob = prob * 0.20 } ;
...

Holdenjerm
03-03-2012, 01:23 AM
Thanks Old Pendant


I will tinker with this awhile and let you guys know how it goes.

Much appreciate the time and guidance.



Jeremy



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum