上面的不对,又改了一下GetThree,但总是报checked为空或不是对象,怎么回事呢?
function GetThree(obj)
{
var v=obj.valuevar vs_value=''
var vs=document.getElementsByName("subject");
for (var i=0 ; i<=vs.length ;i++)
{
if (vs[i].checked)
{
vs_value=vs[i].value
}
}
var div=document.getElementById('test3')
div.innerHTML=""
var str=''for(var i=0;i<a.length;i++)
{
if(a[i][0]==vs_value&&a[i][1]==v)
{
if(str.indexOf((a[i])[2])>-1)
{
//do nothing
}
else
{
str+=a[i][2]+','
}
}
}var Strand=str.substring(0,str.length-1).split(',')for(var i=0;i<Strand.length;i++)
{
div.innerHTML+=("<input type=radio value='"+Strand[i]+"' name='strand' id='strand' >"+Strand[i]+"<br>")
}
document.getElementById("strand").click()
}
function GetThree(obj)
{
var v=obj.valuevar vs_value=''
var vs=document.getElementsByName("subject");
for (var i=0 ; i<=vs.length ;i++)
{
if (vs[i].checked)
{
vs_value=vs[i].value
}
}
var div=document.getElementById('test3')
div.innerHTML=""
var str=''for(var i=0;i<a.length;i++)
{
if(a[i][0]==vs_value&&a[i][1]==v)
{
if(str.indexOf((a[i])[2])>-1)
{
//do nothing
}
else
{
str+=a[i][2]+','
}
}
}var Strand=str.substring(0,str.length-1).split(',')for(var i=0;i<Strand.length;i++)
{
div.innerHTML+=("<input type=radio value='"+Strand[i]+"' name='strand' id='strand' >"+Strand[i]+"<br>")
}
document.getElementById("strand").click()
}
var vs_value=''
var vs=document.getElementsByName("subject");
for (var i=0 ; i<=vs.length ;i++)
{
if (vs[i].checked)
{
vs_value=vs[i].value
}
}
这快有问题吗?
<HTML>
<HEAD>
<TITLE> New Document - http://www.never-online.net </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="never-online, blueDestiny">
<META NAME="Keywords" CONTENT="never-online, blueDestiny">
<META NAME="Description" CONTENT="http://www.never-online.net">
<style>
body, pre
{
font-size: 0.9em;
font-family: verdana;
}
.copyright
{
text-align: center;
font-size: 1em;
}
</style>
</HEAD>
<BODY>
<script language="javascript">
<!--//aDs = [ [id, pid, value, txt] ];
var aDs = [
[1, 0, 'v1', 't1'],
[2, 1, 'v2', 't2'],
[3, 1, 'v3', 't3'],
[4, 3, 'v3', 't4'],
[5, 3, 'v4', 't5'],
[6, 2, 'v6', 't6']
];
//aRs = [ ['container_uid','radioGroup1'] ];
var aRs = [
['rs_first', 'g_f'],
['rs_second', 'g_s'],
['rs_third', 'g_t']
];function build_rg (name, val, txt, idx, id) {
var sHtml = "<input type=\"radio\" name=\"" +name+ "\" value=\"" +val+ "\" val=\"" +id+ "\" onclick=\"change_grp(" +idx+ ")\">"
+ "" +txt+ "";
return sHtml;
};function build_rs (idx) {
var sHtml = "";
for (var i=0; i<aDs.length; i++) {
if (aDs[i][1] == 0)
sHtml += build_rg(aRs[0][1], aDs[i][2], aDs[i][3], 0, aDs[i][0]);
}build_html(0, sHtml);
change_grp(idx);
};function change_grp (idx) {
function iChange(idx) {
var sHtml = "";
var cnt = 0;
for (var i=idx; i<aDs.length; i++) {
if (idx==0) {
continue;
}
else {
var o = document.getElementsByName(aRs[idx-1][1]);
for (var j=0; j<o.length; j++) {
if (o[j].checked) {
val = o[j].getAttribute("val");
}
else {
val = o[0].getAttribute("val");
}
}
}
if (aDs[i][1] == val) {
sHtml += build_rg(aRs[idx][1], aDs[i][2], aDs[i][3], idx, aDs[i][0]);
cnt++;
}
}
if (cnt==0) sHtml = '没有数据';
build_html(idx, sHtml);
}
for (var i=idx+1; i<aRs.length; i++) {
eval("iChange(" +i+ ")");
}
};function build_html (idx, sHtml) {
if (!getById(aRs[idx][0])) return;
getById(aRs[idx][0]).innerHTML = sHtml;
};var getById = document.getElementById;
-->
</script>
<div id='rs_first'></div>
<div id='rs_second'></div>
<div id='rs_third'></div>
<SCRIPT LANGUAGE="JavaScript">build_rs(0)</SCRIPT>
<h4 class="copyright"> Power By blueDestiny, never-online, <a href="http://www.never-online.net" _fcksavedurl="http://www.never-online.net">http://www.never-online.net</a> </h4>
</BODY>
</HTML>
还有HTML所有的控件ID必须是不同的Name可以相同
//是因为我查第三次的时候没有判断第一个Radio吧
var vs_value=''
var vs=document.getElementsByName("subject");
for (var i=0 ; i<vs.length ;i++)
{
if (vs[i].checked)
{
vs_value=vs[i].value
}
}
和:
if(a[i][0]==vs_value&&a[i][1]==v)应该就能根据第一个Radio和第一个Radio的选择取第三个了吧?
我觉得代码应该没问题了啊,vs_value=vs[i].value可以正确取出第一个Radio的选择内容,但调用GetThree时总是报checked为空或不是对象,然后第三组RADIO就不显示了,这是怎么回事呢?能是ID相同的问题吧?我把ID都去掉了,也是报这个错误啊?
<SCRIPT LANGUAGE="JavaScript">
a[a.length]=new Array(<%=c_sj%>)//用一个List把数据库取到的内容循环加到a中
</SCRIPT>
这里省略了数据库取数据部分,关于radio的都在了
判断加个vs[i].type=="radio"就好了,哎,我昨天调了一下午啊!