js获取单选框选中值

<s:iterator id="item" value="appInfo.visitHistoryList">
<li>
<img src="showImage?itemId=<s:property value='#item.goid'/>" onclick="showAppInfo(<s:property value='#item.goid'/>)" title="<s:property value='#item.name'/>">
<div class="comment_btn"><a href="javascript:void(0)" onclick="remark(<s:property value='#item.goid'/>)"></a></div>
<div class="comment_area" style="display:none" id="<s:property value='#item.goid'/>">
<p>评论</p>
<p><input name="isLiked" type="radio" value="1"/>喜欢&nbsp;&nbsp;&nbsp;&nbsp;<input name="isLiked" type="radio" value="0"/>不喜欢</p>
<p><input type="button" class="next_btn2" onclick="remarkApp(<s:property value='#item.goid'/>)" value="确定"/><input type="button" class="next_btn2" onclick="cancleRemark(<s:property value='#item.goid'/>)" value="取消"/></p>
</div>
</li>
</s:iterator>

页面中有很多应用,每个应用都有自己对应的comment_area,因此页面中会遍历出很多comment_area,所以不能根据document.getElementsByName("isLiked")来获取radios数组,那么为了获取item对应的评价该如何做呢???
解决方案:
(1)每个评论区comment_area设置一个id属性,其id属性值为对应应用的id
(2)点击每个应用对应的评论按钮时,传递一个参数,该参数为这个应用的id
(3)获取该应用的显示区域后,让其显示出来,在通过查找子元素的方法来获取radios数组,从而准确的获取该应用对应的单选按钮值.
js代码如下:
function remarkApp(itemId){
var comment=document.getElementById(itemId);
var p=comment.children(1);
var radios=p.children;
var isLiked=-1;
for(var i=0;i<radios.length;i++){
if(radios[i].checked){
isLiked=radios[i].getAttribute("value");
}
}
if(isLiked==-1){
alert("请选择你对该应用的评价");
return;
}
$.ajax({
    url: "/recommend/portal/ajaxRemarkApp.action",
    data: "isLiked="+isLiked+"&itemId="+itemId,
    cache: false,
    success: function(html){
$(comment).css("display","none");
    }
    });
}
值得注意的是,这里是通过获取children的方法来获取radios数组的,还有就是要注意childNodes和children的区别,childNodes获取的是该元素的所有后代元素(子孙元素),children获取的只是子元素,结合最上面的代码:
var comment=document.getElementById(itemId);
var p1=comment.children;    //p1.length=3
var p2=comment.childNodes;  //p2.length=7

你可能感兴趣的:(html,Ajax,css,cache)