80分求助 如何改变默认的selected

wenshun1014 2007-07-23 01:02:58
<tr >
<td width="472" align=left><b>Have children?</b></td>
<td align=right id=s_h_t_match_have_children><A HREF="javascript:show_hide('match_have_children')">Hide</A></td>
</tr>
<tr id=s_h_match_have_children>
<td colspan=2 align='left'>
<select class=main_text_l name='match_have_children' onChange="replace_text();">
<option value='1'>No</option>
<option value='16'>No, but I want children</option>
<option value='32'>No, and I don't want children</option>
<option value='0'>No preference</option>
</select>
</td>
</tr>

JavaScript:

function show_hide(obj_name){
var obj = document.getElementById('s_h_'+obj_name);
var hideselect = document.getElementByName(obj_name);
if(obj.style.display=='') {
obj.style.display='none';
document.getElementById('s_h_t_'+obj_name).innerHTML="<A HREF=\"javascript:show_hide('"+obj_name+"')\">Show</A>";
for (var i=0; i < hideselect.obj_name.option.length; i++){
hideselect.obj_name.option[i].selected = false;
if (i == hideselect.obj_name.option.length - 1){
hideselect.obj_name.option[i].selected = true;
}
}
} else {
obj.style.display=''
document.getElementById('s_h_t_'+obj_name).innerHTML="<A HREF=\"javascript:show_hide('"+obj_name+"')\">Hide</A>";
}
}
在网页打开的时候 默认selected的是"No",我想在点击hide后 默认的selected不在是"No"而是"No Preference",请问JavaScript改怎么写呀 我上面自己写的不正确
...全文
651 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
wenshun1014 2007-07-23
  • 打赏
  • 举报
回复
不胜感激哈 结贴了
浪尖赏花 2007-07-23
  • 打赏
  • 举报
回复
document.getElementByName(obj_name)不可用

因为js里根本就没有getElementByName方法
又因为name不唯一,所以通过name拿控件,取到的肯定是一个集合
wenshun1014 2007-07-23
  • 打赏
  • 举报
回复
明白了 谢谢
浪尖赏花 2007-07-23
  • 打赏
  • 举报
回复
多个select:
document.getElementsByName(obj_name)拿到一个集合

var selectObj=document.getElementsByName(obj_name);
var selectLength=document.getElementsByName(obj_name).length;
for(var i=0;i<selectLength;i++){
selectObj[i];//循环得到select控件
}
hij333 2007-07-23
  • 打赏
  • 举报
回复
如果你的页面内,所有的name值都是唯一的话,那么这句话
document.getElementsByName(obj_name)[0]

等同于你想要的
document.getElementByName(obj_name)
hij333 2007-07-23
  • 打赏
  • 举报
回复
这句话取的就是所有名称为 obj_name ,返回的是一个数组,其中0就是第一个.
如下:
<select name="obj">//这个就是document.getElementsByName(obj)[0]
<option>kk</option>
</select>

<select name="obj">//这个就是document.getElementsByName(obj)[1]
<option>dd</option>
</select>

用这
wenshun1014 2007-07-23
  • 打赏
  • 举报
回复
document.getElementsByName(obj_name)[0]
那个0就是你的select的序列编号

小弟还是没明白 到底是怎么回事 麻烦详细解释下好不
wenshun1014 2007-07-23
  • 打赏
  • 举报
回复
不在form里面
wenshun1014 2007-07-23
  • 打赏
  • 举报
回复
我去试下 document.getElementsByName(obj_name)[0]这种方法 谢谢
估计document.getElementById(obj_name)这个不得行 ID没取对吧
hij333 2007-07-23
  • 打赏
  • 举报
回复
追问一句,你的这些select是否在form中,如果在的话,那么可以用
document.formName.selectName.property
hij333 2007-07-23
  • 打赏
  • 举报
回复
你可以编一下十分简单的页面,你试着用这几个取一属性值试试
document.getElementByName(obj_name)//这个会出错,IE7下测试
document.getElementsByName(obj_name)[0]
document.getElementById(obj_name)
hij333 2007-07-23
  • 打赏
  • 举报
回复
lihui_shine(浪尖赏花)

实现的这个就可以满足你的要求啊,
document.getElementsByName(obj_name)[0]
那个0就是你的select的序列编号
wenshun1014 2007-07-23
  • 打赏
  • 举报
回复
1:问下lihui_shine
var hideselect = document.getElementsByName(obj_name)[0]; 这一共只获得了一个select吧 ,但是我有多个select.
2: hij333
不可用 getElementByName ,换成getElementById,原因不知. ??
在很多select种 如果用ById('s_h_'+obj_name)的话,会也取到其他的select ,目前我只想取这一个怎么办.
N多select种name是唯一的
hij333 2007-07-23
  • 打赏
  • 举报
回复
lihui_shine(浪尖赏花)

的document.getElementsByName(obj_name)[0]方法可行
hij333 2007-07-23
  • 打赏
  • 举报
回复
上面的第一种方法也未通过.
浪尖赏花 2007-07-23
  • 打赏
  • 举报
回复
function show_hide(obj_name){
var obj = document.getElementById('s_h_'+obj_name);
var hideselect = document.getElementsByName(obj_name)[0];
if(obj.style.display=='') {
obj.style.display='none';
document.getElementById('s_h_t_'+obj_name).innerHTML="<A HREF=\"javascript:show_hide('"+obj_name+"')\">Show</A>";
for (var i=0; i < hideselect.options.length; i++){
hideselect.options[i].selected = false;
if (i == (hideselect.options.length - 1)){
hideselect.options[i].selected = true;
}
}
} else {
obj.style.display='';
document.getElementById('s_h_t_'+obj_name).innerHTML="<A HREF=\"javascript:show_hide('"+obj_name+"')\">Hide</A>";
}
}
hij333 2007-07-23
  • 打赏
  • 举报
回复
注:

不可用 getElementByName ,换成getElementById,原因不知.

修改焦点 用你现在用的这种方法可行,LS的第二种方法未通过.

第一种方法没有实验.(IE7下测试)
yiran5467 2007-07-23
  • 打赏
  • 举报
回复
select的当前选中项的指定有三种方法:

方法一:
hideselect.value="0"; //直接指定select的值

方法二:
hideselect.selectedIndex=3; //直接指定当前选中项的索引序号,注意这个序号从0开始

方法三:
hideselect.options[3].selected=true; //指定该项为selected项
wenshun1014 2007-07-23
  • 打赏
  • 举报
回复
var hideselect = document.getElementByName(obj_name);

for (var i=0; i < hideselect.obj_name.option.length; i++){
hideselect.obj_name.option[i].selected = false;
if (i == hideselect.obj_name.option.length - 1){
hideselect.obj_name.option[i].selected = true;
}
}

主要是这个地方的问题 但是不知道应该怎么改 麻烦高手们给点意见 谢谢

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧