前台功能是通过jq/ajax从数据库查出来一些数据,每条数据都根据回调函数append一个表格,每条记录后都有一个checkbox复选框,根据复选框勾选情况,在页面上方的input框内都有一些属性显示,比如:勾选两个,上面第一个input 数量显示2,第二个input显示2个数据其他的属性累加,
我写好的javascript代码如下
for(i=0;i<document.getElementsByName("questionChecked").length;i++)      
{      
//做判断,如果题被选中了,做出一系列赋值
if(document.getElementsByName("questionChecked")[i].checked)
{
part_solve =Number(part_solve)+Number(document.getElementsByName("solvetime")[i].innerHTML);
part_score=Number(part_score)+Number(document.getElementsByName("defaultscore")[i].innerHTML);
part_selectedSum=part_selectedSum+1;} //然后给input赋值,显示一共多少题,总答题时间和总分数
document.getElementById("solveTime").value=part_solve;
document.getElementById("selectedQuestion").value=part_selectedSum;
document.getElementById("selectedScore").value=part_score;
solve=part_solve;
selectedSum=part_selectedSum;
score=part_score;
dataCount=1;}此处定义很多全局变量以便于别的方法ajax传到后台,现在的问题就是,打比方我第一页勾选3个,然后翻页,我翻页是假翻页,每次都ajax后台查一遍。 到第二页的时候我勾选3个,现在input计数应该写的是6道题没错,可是我现在想回到第一页,我用js写的回到前一页上一页勾选的是默认选中,并且在多选一个,问题出现了,这回计数input显示的是10个,就是说回到第一页重复勾选也给算上了。我的思路是做一个判断,判断如果已经勾选的不计数(这句话可能有点坑是个人都知道),可是代码不知如何下手啊,求高手帮助,希望考虑全面,比如我在第一个3个基础上点掉一个勾选然后在多选一个,希望bug少点3QCheckBoxjavascriptjq

解决方案 »

  1.   

    checkbox 加ID=ch_数据库ID , 用一个以checkbox ID 以KEY 记录选的对象 
    刷新数据时去查一下  checkbox ID 对应的对象有没有里头
      

  2.   

    我觉得这里就差了一个js的判断,好像不用在去数据库查了吧》?而且我翻页操作本来就是每次翻页都ajax查一下,这样我每点checkbox也查一遍?
      

  3.   

    我是说 查一下 "用一个以checkbox ID 为KEY 记录是否选中的对象 "
      

  4.   

    我所有checkboxID 和name 都是一样的都是append进去的;
    $('#tablePd').append("<table border='1px' id='tableQpd'><tr id='"+ r.map.listPd[j].questionId +"' name='trName'><td>题目内容:<div id='options' class='lhll' style='width: 1000px;'>"+r.map.listPd[j].questionStem+"<div><table><tr valign='top'><td><b>A:</b></td><td style='word-break:break-all; word-wrap:break-all;'></td></tr></table></div><div><table><tr valign='top'><td><b>B:</b></td><td style='word-break:break-all; word-wrap:break-all;'></td></tr></table></div><div><table><tr valign='top'><td><b>C:</b></td><td style='word-break:break-all; word-wrap:break-all;'></td></tr></table></div><div><table><tr valign='top'><td><b>D:</b></td><td style='word-break:break-all; word-wrap:break-all;'></td></tr></table></div></div></div></td><td>首次曝光时间:"+r.map.listPd[j].exposureTime+"</br>答题需要:<span name='solvetime'>"+r.map.listPd[j].questionSolveTime+"</span>分钟</br>本题分值:<span name='defaultscore'>"+r.map.listPd[j].questionDefaultScore+" </span></br>知识点: 难度系数:"+r.map.listPd[j].degreeOfDifficulty+"<br>来源:题库 <br><br><input type='checkbox' name='questionChecked' onclick='checkQuestion();'>加入试题</td><td>增加同类试题<br> 答案及解释<br> 修改<br> 删除<br></td></tr></table>");
      

  5.   

    手残了 id没写,肯定不一样。
    你数据中不是有个 
    r.map.listPd[j].questionId ,就以这个为KEY 记录是否选中