下面是运用Struts标签的jsp界面:
<html>
<head>
<script type="text/javascript">
function rptComp(){
var chk= document.getElementsByName("chk");
var flag = false;
var count=0;
var j = 0;
for(var i=0; i<chk.length ; i++) {
if(chk[i].checked) {
j=i;
flag=true;
count++;
}
}
if (count == 0) {
Ext.Msg.alert("提示","请选择要审核的报告!");
return;
}
if (count > 1) {
Ext.Msg.alert("提示","一次只能审核一个报告!");
return;
} // var s=document.getElementById("status");
//alert(s.value);
//alert(s.innerText); //if(s.innerText=="已审"){
//alert("提示","该报告已审,无需重新审核!");
} */
}
</script>
</head>
<body>
<div id="now_title"><img src="../images/Title_btn.png" /> 报告管理>><span class="light_orange">报告列表</span></div>
<div id="frame_toolbar">
<ul>
<li class="ftp_border">
<span class="ftp_text" onmousedown="rptNew();"><img src="../images/ico/icon031a1.gif" border="0">新建</span>
</li>
<li class="ftp_border">
<span class="ftp_text" onmousedown="rptDelete();"><img src="../images/ico/icon031a4.gif" border="0">删除</span>
</li>
<li class="ftp_border">
<span class="ftp_text" onmousedown="rptSort();"><img src="../images/ico/icon031a5.gif" border="0">排序</span>
</li>
<li class="ftp_border">
<span class="ftp_text" onmousedown="rptComp();"><img src="../images/ico/icon031a6.gif" border="0">审核</span>
</li>
</ul>
</div>
<s:form id="rptform" method="post">
<table class="cTable table tCenter" id="content">
<tr class="cTitle toolbar_bg">
<td width="5%"><div>序号</div></td>
<td width="15%"><span class="split ctSplit"></span><div>报告名称</div></td>
<td width="10%"><span class="split ctSplit"></span><div>报告年度</div></td>
<td width="10%"><span class="split ctSplit"></span><div>报告期间</div></td>
<td width="10%"><span class="split ctSplit"></span><div>披露时间</div></td>
<td width="15%"><span class="split ctSplit"></span><div>状态</div></td>
</tr>
<s:iterator value="#rptManager.pageReport.objectList" id="rpts" status="rpt">
<tr>
<td width="5%"><div align="center"><s:property value="#rpt.Index+1" /></div></td>
<td width="15%"><div align="center"><s:property value="#rpts.rptName" /></div></td>
<td width="10%"><div align="center"><s:property value="#rpts.rptYear" /></div></td>
<td width="10%"><div align="center"><s:property value="#rpts.rptPeriod" /></div></td>
<td width="10%"><div align="center"><s:property value="#rpts.rptTime" /></div></td>
<td width="15%"><div align="center"><s:property value="#rpts.status" /></div></td>
<td width="15%">
<input type="checkbox" name="chk" value='<s:property value="#rpts.id" />'/>
</td>
</tr>
</s:iterator>
</table>
</s:form>
</body>我想实现的是在选中某条记录时,如何用js获得相应记录中“状态”这个字段里的值? 我原来的做法是在"><div align="center"><s:property value="#rpts.status" /></div>;里设一个id="status",然后在js中用getElementById,获得它的值,但是不管点哪条记录,输出的都是第一条记录中“状态”里面的值,所以这里不知道为什么,请哪位高手指点一下,谢谢!
另外,如果有哪位高手可以用js实现那个“排序”功能的,也请指教一下,就是不通过后台处理,直接在页面上js控制Struts分页重新排序,比如按“报告时间”,按“序号”等不同字段排序。
<html>
<head>
<script type="text/javascript">
function rptComp(){
var chk= document.getElementsByName("chk");
var flag = false;
var count=0;
var j = 0;
for(var i=0; i<chk.length ; i++) {
if(chk[i].checked) {
j=i;
flag=true;
count++;
}
}
if (count == 0) {
Ext.Msg.alert("提示","请选择要审核的报告!");
return;
}
if (count > 1) {
Ext.Msg.alert("提示","一次只能审核一个报告!");
return;
} // var s=document.getElementById("status");
//alert(s.value);
//alert(s.innerText); //if(s.innerText=="已审"){
//alert("提示","该报告已审,无需重新审核!");
} */
}
</script>
</head>
<body>
<div id="now_title"><img src="../images/Title_btn.png" /> 报告管理>><span class="light_orange">报告列表</span></div>
<div id="frame_toolbar">
<ul>
<li class="ftp_border">
<span class="ftp_text" onmousedown="rptNew();"><img src="../images/ico/icon031a1.gif" border="0">新建</span>
</li>
<li class="ftp_border">
<span class="ftp_text" onmousedown="rptDelete();"><img src="../images/ico/icon031a4.gif" border="0">删除</span>
</li>
<li class="ftp_border">
<span class="ftp_text" onmousedown="rptSort();"><img src="../images/ico/icon031a5.gif" border="0">排序</span>
</li>
<li class="ftp_border">
<span class="ftp_text" onmousedown="rptComp();"><img src="../images/ico/icon031a6.gif" border="0">审核</span>
</li>
</ul>
</div>
<s:form id="rptform" method="post">
<table class="cTable table tCenter" id="content">
<tr class="cTitle toolbar_bg">
<td width="5%"><div>序号</div></td>
<td width="15%"><span class="split ctSplit"></span><div>报告名称</div></td>
<td width="10%"><span class="split ctSplit"></span><div>报告年度</div></td>
<td width="10%"><span class="split ctSplit"></span><div>报告期间</div></td>
<td width="10%"><span class="split ctSplit"></span><div>披露时间</div></td>
<td width="15%"><span class="split ctSplit"></span><div>状态</div></td>
</tr>
<s:iterator value="#rptManager.pageReport.objectList" id="rpts" status="rpt">
<tr>
<td width="5%"><div align="center"><s:property value="#rpt.Index+1" /></div></td>
<td width="15%"><div align="center"><s:property value="#rpts.rptName" /></div></td>
<td width="10%"><div align="center"><s:property value="#rpts.rptYear" /></div></td>
<td width="10%"><div align="center"><s:property value="#rpts.rptPeriod" /></div></td>
<td width="10%"><div align="center"><s:property value="#rpts.rptTime" /></div></td>
<td width="15%"><div align="center"><s:property value="#rpts.status" /></div></td>
<td width="15%">
<input type="checkbox" name="chk" value='<s:property value="#rpts.id" />'/>
</td>
</tr>
</s:iterator>
</table>
</s:form>
</body>我想实现的是在选中某条记录时,如何用js获得相应记录中“状态”这个字段里的值? 我原来的做法是在"><div align="center"><s:property value="#rpts.status" /></div>;里设一个id="status",然后在js中用getElementById,获得它的值,但是不管点哪条记录,输出的都是第一条记录中“状态”里面的值,所以这里不知道为什么,请哪位高手指点一下,谢谢!
另外,如果有哪位高手可以用js实现那个“排序”功能的,也请指教一下,就是不通过后台处理,直接在页面上js控制Struts分页重新排序,比如按“报告时间”,按“序号”等不同字段排序。
首先感谢4楼的朋友。
那我如何取到“状态"这个td里面的值呢?还有你说的“table设个id,然后js可以定位到每个td的”关键是该如何定位那个id,这个我不会,请指教一下! 谢谢
要是用jQuery的话,其实就是几句话的事情。
另外,上面那个js取“状态”中的值,有哪位可以帮忙解决的,请指教一下! 我遇到的问题是取不到某一个记录中那“状态”字段里的值。
要取得状态字段的值,如果你有设置hidden的话,直接通过id取就行。
要是没有设置hidden,只能根据dom对象取得某个td里的html内容了。
//alert(s.value);
//alert(s.innerText);
用这种方法肯定不得不到撒,因为<td width="15%"> <div align="center"> <s:property value="#rpts.status" /> </div> </td>这样写每个id都是status,怎么取?
你可以把<input type="checkbox" name="chk" value=' <s:property value="#rpts.id" />'/>
写成<input type="checkbox" name="chk" value=' <s:property value="#rpts.status" />'/>
得到这个checkbox的value不就OK了
<input type="checkbox" name="chk" value=' <s:property value="#rpts.status" />'/>
如果改成上面那个,那岂不是取不到"#rpts.id" 的值? 而"#rpts.id"也是有用处的。
我要实现的就是点中某条记录,然后取那条记录中“状态”字段里面的值
<div align="center" id="sts"> <s:property value="#rpts.status" /> </div>
这样的话,只能在页面上生成一个html文本,最后的Html是这样:
<td><div align="center" id="sts">your_value</div></td>
而不是一个input项。所以它是没有值的。
而且,你的这个id="sts"每行都一样,所以最后你得到的是id="sts"的第一个object。也就是你说的那个title。
我上面已经说过了,你要么生成一个hidden项。要么用取html文本的方式。
个人推荐,去下一个jQuery框架,用取html文本的方式。
如果要用原生js解决,真的不太好写。换了浏览器还可能有bug。
rpts_status_0,rpts_status_1,rpts_status_2……
然后你用:
var s=document.getElementById("rpts_status_0").value;
取得的是第一行的status。依次类推。
按照朋友上面是说法,加上去了 提示document.getElementById("rpts_status_0").value is null值,还是为空值。 id="rpts_status_ <s:property value='#rpt.index'/>" 我在想是否此id有误??
这个代码我测试过的,在我这里是没有问题的。
document.getElementById("rpts_status_0").value
这个js我没有测试过。
这里的id我是按你教的方法 id="rpts_status_<s:property value='#rpt.index'/>" 这样设的,但是在js里会报出document.getElementById("rpts_status_0")这个取值为空。也就是没取到那个id了。所以我是在想那个id设可能有问题。id="rpts_status_<s:property value='#rpt.Index+1'/>"也是不行。你说你测试成功过 能否代码贴出来让我看看 你是如何设的 也许是细节问题, 找不出来 十分感谢。
代码都在上面了,其他的分页代码,新建,编辑,删除功能我上面略掉,没贴出来,但是跟审核功能没关系吧?
用你的浏览器打开你要测试的那个页面,然后在页面上右键->查看源代码。
如果用FF的话,你可能需要右键->本帧->查看帧源代码。
你在服务器端确实没写html源码,但是在浏览器上有html啊。其实你不用全贴,只把某一行的状态那个td里的html贴出来就行了。
无论jsp还是asp,都是不能用js访问的。js访问的html生成的dom对象。把html贴出来一看就一目了然了。
如果你连这些最基本的调试都不会的话,那我真的没办法帮你了。
另外有什么方法可以任意的取一条记录中的rpts_status_0 ,在js中要得到某条记录的状态值,document.getElementById("?") dom里面怎么设?
这个只是作为一个隐藏项放在td里面。
你以前怎么显示的,现在还怎么显示。
也就是说,上面那段代码,只是追加到你以前的代码的每行状态td里。
<td width="15%"> <input type="hidden" id="rpts_status_ <s:property value='#rpt.index'/>" value=" <s:property value='#rpts.status'/>"/><div align="center"> <s:property value="#rpts.status" /> </div> </td>
昨天我把问题解决了,我的做法是改进了一点<td width="15%"><div id="rpts_status_<s:property value='#rpt.index' />" align="center"><s:property value="#rpts.status" /></div></td>
然后在js里用for(var i=0; i<chk.length ; i++) {
if(chk[i].checked) {
j=i;
}
}
var s=document.getElementById("rpts_status_"+j);
alert(s.innerText);
的土办法取值,最后也是可以的,可以随机取到某条状态里的值了。呵呵,也不知道这样做法是否规范正确,感觉有点怪怪的,测试了几次是成功了,那索性先运用了。等哪天突然不行了,再向论坛上各位高手请教。
在此再次感谢各位的帮助。