[Javascript] .match() method
Peter Brunone
peter at brunone.com
Tue Aug 3 00:41:19 CDT 2004
Hi again...
In this case, I'd suggest checking for the existence/"true-ness"
of each variable, i.e.
if(aOccur) {
if(aOccur.length>=3){
recommendation = "Product A"
}
}
}
This way you skip right over it if aOccur contains nothing.
Cheers,
Peter
-----Original Message-----
From: javascript-bounces at LaTech.edu On Behalf Of Clancy Jones
Thanks Peter, that has definitely got things rolling.
I now have another problem!
I have a form which has five groups of radio buttons, cat1, cat2 etc.
Based
on the user's selection of these radio buttons I want to recommend one
of
three products when the form is submitted. The criteria for this is
that if
3 or more of the checked radios have a checked value of a,b,c
(indicating
product a, b or c) then that product is the recommended product. But if
no
selection was made to indicate product c for example then i get a
'length'
is null or not an object error. I've tried to trap this with things
like
if(aOccur.length) etc but no joy so far.
Here's the code...
<script langucat2="JavaScript">
function processForm(){
var cat1Value
var cat2Value
var cat3Value
var cat4Value
var cat5Value
//get the selected value for each category
cat1Value = getRadioValues("cat1");
cat2Value = getRadioValues("cat2");
cat3Value = getRadioValues("cat3");
cat4Value = getRadioValues("cat4");
cat5Value = getRadioValues("cat5");
//concatenate the values into a single string
//which might be something like "acbaa"
var formSelections =
cat1Value+cat2Value+cat3Value+cat4Value+cat5Value;
//work out how many occurrences of
//each product indication are in
//the formSelections string
re = /a/ig;
var aOccur = formSelections.match(re)
re = /b/ig;
var bOccur = formSelections.match(re)
re = /c/ig;
var cOccur = formSelections.match(re)
var recommendation
//the problem is here -
//eg. if no "Product C" selections
//were made then cOccur
//causes a 'length' is null or not
//an object error
if(aOccur.length>=3){
recommendation = "Product A"
}
if(bOccur.length>=3){
recommendation = "Product B"
}
if(cOccur.length>=3){
recommendation = "Product C"
}
alert("The recommended product is: " + recommendation);
}
function getRadioValues(paramRadioGroup){
var radioGroup = document.Main[paramRadioGroup]
for (var i=0; i<radioGroup.length; i++){
if (radioGroup[i].checked) {
return radioGroup[i].value
}
}
}
</script>
Any help much appreciated!
Clancy
>From: "Peter Brunone" <peter at brunone.com>
>
>Clancy,
>
> I've never tried this before, but the documentation at
>
>http://msdn.microsoft.com/library/en-us/script56/html/js56jsmthmatch.as
>p
>
>says this:
>
>"If the global flag (g) is not set, Element zero of the array contains
>the entire match..."
>
> Basically, it looks like when this flag is not set, you only get
the
>first occurrence. FYI, this method is meant to be used with a regular
>expression (or string containing regex pattern and flags) as the search
>criterion.
>
> Anyway, you can read up at the link above and see if it helps.
>
>Cheers,
>
>Peter Brunone
>-----------------------
>Do the impossible.
>Go home early.
>
>www.EasyListBox.com
>-----------------------
>
>-----Original Message-----
>From: javascript-bounces at LaTech.edu
> On Behalf Of Clancy Jones
>
>Hi, I haven't used the match() method before but am trying to use it in
>conjunction with the length property to find out how many instances of
>a
>
>substring are contained within a string.
>
>I grabbed this example from my Google search:
>
><script language="JavaScript">
>var s = "Tony was here. Not Bob, Tony's brother, but Tony himself.";
>var occur = s.match("Tony"); document.write(occur.length); </script>
>
>The site listing the above said the output should be 3 but I get 1. I
>am using IE6.
>
>Can someone point me in the right direction?
>
>Thanks a lot,
>Clancy
More information about the Javascript
mailing list