当前位置: 代码迷 >> Java Web开发 >> js代码不起作用,求相助!
  详细解决方案

js代码不起作用,求相助!

热度:100   发布时间:2016-04-13 22:16:28.0
js代码不起作用,求帮助!!!!!
我想用ajax实现select元素的二级联动,现在问题是,在回调函数里写的操作select元素的部分代码没有效果,在ie下调试过,也没报错。上部分代码:

<s:form name="form1" id="form1" action="equ-zscaninfo!list.action">
<table>
<tr>
<td>路局:</td>
<td><s:select name="equZscaninfo.bureau_code" id="bureau_code" list="dicBureauList" listKey="bureau_code" listValue="bureau_name" onchange="bureauChange()"></s:select></td>
<td>车站:</td>
<td><s:select name="equZscaninfo.station_name" id="station_name" list="dicCpsList" listKey="station_name" listValue="station_name"></s:select></td>
</tr>
</table>
</s:form>
</body>
<script>
function bureauChange(){
                //放在这里执行也无效
//$("#station_name").empty();
                //用dom对象也无效
//document.getElementById("station_name").options.length=0;

var url="equ-zscaninfo!test.action";
var data="bureau_code="+$('#bureau_code').val();
$.ajax({
url:url,
data:data,
dataType:'text',
success:function(res){
var a=res.split("|");
                                //清空select,无效
//$("#station_name").empty();
//$("#station_name").append("<option value=''></option>");
                                //innerHTML能取到
//alert(document.getElementById("station_name").innerHTML);
                                //无效
document.getElementById("station_name").options.length=0;

//for(var i=0;i<a.length;i++){
//var opt=new Option(res[i],res[i]);
// var optt="<option value='"+a[i]+"'>"+a[i]+"</option>";
// $('#station_name').append(optt);
//}
}
});
}
</script>

求大神帮忙 看看是哪里错了
------解决思路----------------------
这个列表是Struts 封装过的,有可能无法直接使用DOM操作获取到select 列表

调试一下,看看 document.getElementById("station_name") 是否是select 列表,看看document.getElementById("station_name").options.length 是否是列表长度 

如果不行,就试试  document.getElementById("station_name").removeChild(document.getElementById("station_name").childNodes[0]);    往这个方向试试看
------解决思路----------------------
你调试看看吧。  你先看看,  <td><s:select name="equZscaninfo.bureau_code" id="bureau_code" list="dicBureauList" listKey="bureau_code" listValue="bureau_name" onchange="bureauChange()"></s:select></td>   
        <td>车站:</td>
        <td><s:select name="equZscaninfo.station_name" id="station_name" list="dicCpsList" listKey="station_name" listValue="station_name"></s:select></td>
  这个画面生成的html 是什么?
其次 ,你res 数据是什么,
或者你写死添加个看看可以不 
$("#station_name").append("<option value='Value'>Text</option>");
------解决思路----------------------
$("#station_name")只能读,不能改  ,, 看不出来时什么原因,代码里面也有没有禁用的 。




js只要放在function里就没效果。写在外面才有效果。 也看不出什么原因。

帮顶了。
------解决思路----------------------
既然用了strut2,它只带二级联动的标签<doubleSelect>只要它需要的数据传值就行了,你这个麻烦了
你这个问题百分百是那个js语句写错了,用火狐浏览器看一下吧
  相关解决方案