活动时间这个条件是固定的,活动类型是从数据库里获取的。活动类型多达数十条,这里要做折叠展开的功能。
问题一:活动类型选择栏如何做出折叠、展开的效果?
jsp页面
<h1 id="Activity" style="font-size:22px;font-family:Lucida Grande", Helvetica, Arial,""><b>活动类型b>h1>
<div id="moreActivity" style="display:none;">
div>
<img alt="展开" src="../images/icon-coin.png" onclick="Unfold()">展开
javascript
获取活动类型并动态添加到页面中
$.ajax({
url:'getAllSecondInterest',
data:{},
type:'post',
cache:false,
dataType:'json',
success:function(data){
for(var i=0;i<4;i++){
$('#Activity').append("+data[i].interestName+"");
}
for(var i=4;i'#moreActivity').append("+data[i].interestName+"");
}
}
});
折叠展开方法
var index=1;
//展开、收起
var Unfold=function(){
if(index%2!=0){
$('#moreActivity').show();
}
else{
$('#moreActivity').hide();
}
index++;
}
====================问题一完结
在做时间条件查询的时候,因为条件是固定的,所以我的做法是,每次时间条件复选框的选中或取消都会向后台传递5个布尔类型的值。
var time1;
var time2;
var time3;
var time4;
var time5;
function change(){//时间选择
time1=document.getElementById("timeNow").checked;
time2=document.getElementById("timeTwoDays").checked;
time3=document.getElementById("timeSevenDays").checked;
time4=document.getElementById("timeWeekAfter").checked;
time5=document.getElementById("timeHappened").checked;
reloadPicture();//图片加载
}
在后台通过进行分析得出我所选的条件,再进行sql语句的拼接,进行查询。
但是活动类型有三四十条(只要你愿意还可以更多),所以说要是还沿用时间条件的做法就很烦人。而且活动类型条件跟时间条件还有个很大的不同。
时间条件的sql实例:where.... and a.starttime < date_format(now(), '%Y-%m-%d 23:59:59')
活动类型条件的sql实例:where .... and i.interestid in (19,20)
于是我决定把所有选中的活动类型的id合成一条字符串类型的数据传递给后台
问题二:如何在每次进行活动类型条件选择/取消的时候把所有选中的类型的id获取?
我相信不少人的想法跟我一开始一样,定义一个数组,没选中一个活动类型,就把活动类型的id放进数组里,进行数据处理后,传个字符串给后台。
那么问题来了,当我取消选中一个活动类型时,按理说就应该从数组里去除我选中的这个活动类型的id,理论上讲做到从数组里删除一个数据是可以做到的,但是仔细想想会有点麻烦。作为一个懒人,我怎么能接受这种方案?经过一系列的头(目)脑(光)风(呆)暴(滞),我想到了下面的这个办法。
//每当选择/取消某个活动类型复选框时,遍历所有的活动类型复选框,找出选中的活动类型,并获取id和name
//这样就避免了进行减法,只要做加法,方便了不少
$('#Activity').find("input").each(function(){
if($(this).is(':checked')){
var interestsObjectIdAndName=new Object();
interestsObjectIdAndName.interestId=$(this).attr('id');
interestsObjectIdAndName.interestName=$(this).attr('name');
interestsStr.push(interestsObjectIdAndName);
}
});
====================问题二完结