I ran accross this Code somewhere on the Javascript Forum. I wish I could remmember who wrote it so I could attribute it to them but I don't.
This is how they did it. I shortened it and adapted it for CF but it works fine:
</script>
<SCRIPT Language="JavaScript">
<!--
function updatesel(form)
{
form.Two.length = 1;
form.Two.selectedIndex = 0;
choice = form.One.options[form.One.selectedIndex].value;
if (choice == "first"

{
<CFLOOP index="x" From="1" to="4">
<CFOUTPUT>
(form.Two.length)++;
form.Two.options[form.Two.length - 1].text = "SubChoice #x#";
form.Two.options[form.Two.length - 1].value = "SC#x#";
</CFOUTPUT>
</CFLOOP>
}
if (choice == "second"

{
<CFLOOP index="x" From="1" to="6">
<CFOUTPUT>
(form.Two.length)++;
form.Two.options[form.Two.length - 1].text = "Second SubChoice #x#";
form.Two.options[form.Two.length - 1].value = "SC#x#";
</CFOUTPUT>
</CFLOOP>
}
}
//-->
</script>
<FORM METHOD="POST" ACTION="look2.cfm" NAME="myform">
<SELECT NAME="One"
OnChange="updatesel(this.form)"
WIDTH="250">
<OPTION VALUE = "%">All</OPTION>
<OPTION VALUE = "first">First choice</OPTION>
<OPTION VALUE = "second">Second choice</OPTION>
</SELECT>
Look
<SELECT NAME="Two" WIDTH="250" >
<OPTION VALUE = "%">All</OPTION>
<CFLOOP index="x" From="1" to="6">
<CFOUTPUT>
<OPTION VALUE = "">000000000000000000000000</OPTION>
</CFOUTPUT>
</CFLOOP>
</select>
</FORM>
The Script is clear enough , IF choice = this then change form.Two.options = this
form.Two.value = this
The thing is that you have to have all the information available when the page is served because you can't requery the Database in a Javascript without updating the page. So you need to gather all the information before hand and just make the <options> change.
Depending on how Dynamic it all is that might not be so easy. But that should get you started.
Have fun.