网页数组元素用JAVASCRIPT如何控制?(50分)

  • 主题发起人 主题发起人 南宫吹云
  • 开始时间 开始时间

南宫吹云

Unregistered / Unconfirmed
GUEST, unregistred user!
比如,PHP中我用循环生成了一系列的select网页元素areaid和selbsid,
还有一系列的input网页元素bsid:
<select name=areaid["<?=$i?>"] onchange='chsel(<?=$i?>);'>
areaid 是一个数组元素,当用户点击这个下拉框时,应该填充相应的selbsid:
<select name=selbsid["<?=$i?>"] onchange="{bsid[<?=$i?>].value+=this.options[this.selectedIndex].value+';';bsid[<?=$i?>].focus();}">
<option value="">请选择</option>
</select>
<input type="text" name=bsid["<?=$i?>"] id="text1" size="16">
处理函数如下,会出错,我对HTML和JAVASCRIPT不熟,不知道定义的数组元素如何引用:
function chsel(isel)
{
if(document.Append.areaid[isel].value)
{
document.Append.selbsid[isel].options.length=0;
for(var i=0;i<selects[document.Append.areaid[isel].value].length;i++)
{
document.Append.selbsid[isel].add(selects[document.Append.areaid[isel].value]);
}
}
}
 
大家帮忙up啊
 
怎么UP了这么多次,也没有答呀?
 
不用什么数组,只要生成有规律的Name就可遍历元素,
function submit1_OnClick(n)
{
for (var i=0;i<form1.elements.length;i++)
{
var e = form1.elements;
if (e.name.substring(0, 1) == 'C')
{
//Do something...
}
}

document.form1.submit();
}
 
我用循环生成的Name当然有规律了,不能直接得到它吗?要做一个循环好像效率不太高呀。
我想用document.getElementsByName('name');的方法,可是却得不到,不知是什么原因。
我的程序已经改成:
<select name=areaid<?=$i?> onchange='chsel(this,<?=$i?>);'>
...
<select name=selbsid<?=$i?> onchange="{bsid<?=$i?>.value+=this.options[this.selectedIndex].value+';';bsid<?=$i?>.focus();}">
<option value="">请选择</option>
</select>
<input type="text" name=bsid<?=$i?> id="text1" size="16">
处理程序改成:
function chsel(sel,isel)
{
if(sel.value)
{
alert('begin');
selbsid=document.getElementsByName("selbsid"+isel);//我不知道为什么得不到正确的元素
alert('end'); //正常
alert(selbsid.type);//运行到此处显示undefine,应该是select呀
//下面执行肯定就不对了
selbsid.options.length=0;
for(var i=0;i<selects[sel.value].length;i++)
{
selbsid.add(selects[sel.value]);
}
}
}
 
效率高啊,怎么不高,
 
To kkyy,
谢谢您的解答,是不是除了这种方法没有别的办法了?
现在新问题又出来了,当用你的方法找到这个元素时,第二次添加相同的option值时会出错。
是不是同一个表单内不能存在有相同值的SELECT元素(尽管NAME属性不同)?
 
我总是感觉循环一遍,没有直接用
document.getElementsByName("selbsid"+isel)
得到的效率高,您能解释一下为什么用这个函数不能得到此元素吗?
 
如果代码没错,大小写也没错,应该是可以用那个函数的,
不过遍历其实也是差不多的,你找一个对象,只不过搜索方法好一点而已,内部也是要一个一个找的,
 
一组单选钮的名字是相同的,但值不同,
 
是不是同一个表单内不能存在有相同值的SELECT元素(尽管NAME属性不同)?
 
单选钮我知道可以NAME相同,值不同,现在我是SELECT元素NAME不同,值相同却不可以了,
不知怎么回事,因为我上面的那段代码是当用户点击第一个SELECT里的某个OPTION时,根据
它的值,添加相应的内容到第二个SELECT元素里,这样的一组SELECT一共有30个,当点第二
组的第一个SELECT时,点击相同值的OPTION时,因为上面一组已经存在一个有相同值的SELECT
元素了,这时添加会出错,我想可能是同一个表单内不能存在有相同值的SELECT元素(尽管
NAME属性不同)。
 
哦,我看错了,呵呵,SELECT的值要是相同了,那确实不好处理啊,那样你还不如合并值相同的项呢,
 
不能合并啊,这30组SELECT其实和一组的功能是一样的,只是你怎么控制它将选择的值自动
填写到相应的INPUT元素里去呢?该添加到哪里呢?迷茫啊。。
 
我的问题仍然没有解决,看来是实现不了了?
 
多人接受答案了。
 
后退
顶部