日期:2014-05-16  浏览次数:20378 次

解决js获取标签<s:select>的值为null的问题

JSP页面中有如下代码

<s:select name="commonmatchinfo.sportsTypeIdFk" headerKey="0" headerValue="请选择体育类型" list="#request.sportstypeMap" onchange="callTestMethod()" label="体育类型"/>


<script type="text/javascript">
function callTestMethod(){
var sportstypeSelect=document.getElementById("commonmatchinfo.sportsTypeIdFk");
alert(sportstypeSelect.Value);
  
}
</script>

?



在JS中获取<s:select>标签里的值始终为null,在网上找到了如下解决方案:

?写道
1. 'null'为空或不是对象:
<script type="text/javascript"> 里面加个defer=true属性试试看,
即:<script type="text/javascript" defer=true>
2. document.getElementById为null
原因: var titab=document.getElementById("titletab");没有取到对象
解决办法:
1.在错误语句的下面加上alert(titab);调试语句,看看是否有消息框弹出
2.如果没有弹出,检查HTML代码中的是否存在"id=titletab"的<table>标签(要仔细哦,一个字母都不能错的)
3.如果标签存在,那么考虑<script>代码段的位置问题,切记包含有类似getElement代码<script>代码段 必须出现在HTML的Element之后也就是说你把<script>代码段放到<html>标签之后然后尝试

?但是仍然不能解决问题,后来通过查看当前网页的源码才发现原来Struts2生成的html将id改写成为了

<select name="commonmatchinfo.matchLeagueIdFk" id="Update_commonmatchinfo_matchLeagueIdFk">
?

所以将JS中的getElementById的参数改为Update_commonmatchinfo_matchLeagueIdFk即可解决问题了