大哥,我是做java的,js不是很熟,能帮忙做一个吗??谢谢了

解决方案 »

  1.   

    box1
    box2
    box3
    box4
    box5
    box6先问客户以下个问题,他能很清楚的回答的话,
    再问其它人,如果其它人的想法跟他的想法一致,那你就按他说的做。
    否则,就告诉客户,这样的需求会让更多人迷惑。
    问题1:先点3,再点1,再点shift+5,那么应该选哪些?
    问题2:先点3,再点1,再在其它地方点了一下,再点shift+5,那么应该选哪些?
    问题3:先点3,再点1,再点3(取消3),再点shift+5,那么应该选哪些?
    问题4:先点12345,再点3(取消3),再点shift+5(取消5),那么应该选哪些(是不是要取消一些)?
    问题5:先点1,再点1(取消1),再点shift+5,该怎么做?同名的checkbox,要做到shift的功能应该并不难,只是逻辑不容易理解。----我想,这或许就是checkbox没有supportShiftKey或类似属性的原因吧
      

  2.   

    恩,楼上大哥说的这些我也考虑过,但是人家客户根本不管。
    只要能让他看到shift实现就行。比如问题1,那就选中3以下的结点就行。他们操作的时候,不会像楼上说的那样操作的,就是点一个,然后shift再点下一个,只要别出太大差错就可以了。
    谢谢楼上的。
      

  3.   

    如果你现在就做,并且只支持shift的十分之一的功能(就是他所说的那一点),
    那剩下的十分之九的功能,最后会以“客户抱怨”的形式让你们完成。他可以不管那么多,因为他只代表一个用户,
    你得想多点,因为你们是专家,得跟他讲清楚写明白(在合同里写上):
    这一点就算了(不用多收钱),
    但是以后不得提的跟这有关的抱怨。<html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>JK:支持民族工业,尽量少买X货</title></head><body onclick="shiftForSelectFun()"><input type=checkbox name=aaa >
    <input type=checkbox name=aaa >
    <input type=checkbox name=aaa >
    <input type=checkbox name=aaa >
    <input type=checkbox name=aaa >
    <input type=checkbox name=aaa ></body></html>
    <script>
    function shiftForSelectFun()
    {
    if(!event) return ;
    if(!event.shiftKey) return;
    var eventSrcElement=event.srcElement;
    if(eventSrcElement && eventSrcElement.tagName=="INPUT" && eventSrcElement.type=="checkbox") {
    if(eventSrcElement.checked){
    var allCheckboxes=document.getElementsByName(eventSrcElement.name);
    var fromNum=0;
    var toNum=10000000;
    for(var i=0;i<allCheckboxes.length;i++){
    if(allCheckboxes[i]==eventSrcElement){
    toNum=i;
    break;
    }
    if(allCheckboxes[i].checked) fromNum=i;
    }
    for(var i=fromNum+1;i<toNum;i++){
    allCheckboxes[i].checked=true;
    }

    }
    else{
    // to be extended
    }

    }
    }</script>
      

  4.   

    以上代码有错误,更正如下:
    var fromNum=0;
    var toNum=10000000;--->>>var fromNum=10000000;
    var toNum=0;
      

  5.   

    哦,楼上的大哥,非常感谢您的帮助。
    但是这个是在dtree里面实现的。
    <div><img>
    <a>
    <input></input>结点名字
    </a>
    </div>然后结点的位置都不太确定。您用过dtree吗,最重要的在结点间移动。我不知道该怎么判断。
      

  6.   

    把代码改了一下,加了些功能。
    代码已收集到:http://jkisjk.spaces.live.com/blog/cns!758CACE25E89DD3B!462.entry
    -------
    <html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>JK:支持民族工业,尽量少买X货</title></head><body onclick="shiftForCheckBoxFun()">
    支持shift的checkbox:<br>注1:原始需求来自:http://community.csdn.net/Expert/topic/5124/5124061.xml?temp=.5592005<br><br>
    <hr><input type=checkbox name=aaa >
    <input type=checkbox name=aaa >
    <input type=checkbox name=aaa >
    <input type=checkbox name=aaa >
    <input type=checkbox name=aaa >
    <input type=checkbox name=aaa ></body></html>
    <script>
    var previousCheckBoxForShift="";
    function shiftForCheckBoxFun()
    {
    if(!event ) return ;
    var eventSrcElement=event.srcElement;
    if(eventSrcElement && eventSrcElement.tagName=="INPUT" && eventSrcElement.type=="checkbox") {
    if(!event.shiftKey || eventSrcElement.name!=previousCheckBoxForShift.name) {
    previousCheckBoxForShift=eventSrcElement; 
    return;
    }
    if(eventSrcElement.checked==previousCheckBoxForShift.checked && eventSrcElement.name==previousCheckBoxForShift.name)//the 2nd condition can be changed.  
    {
    var allCheckboxes=document.getElementsByName(eventSrcElement.name); //the sentence can be changed.
    var fromNum=1000000;
    var toNum=-1;
    for(var i=0;i<allCheckboxes.length;i++){
    if(allCheckboxes[i]==eventSrcElement)
    {
    toNum=i;
    }
    if(allCheckboxes[i]==previousCheckBoxForShift)
    {
    fromNum=i;
    }
    if(fromNum!=1000000 && toNum!=-1) break;
    }
    if(fromNum!=1000000 && fromNum>toNum){
    var temp=toNum;
    toNum=fromNum;
    fromNum=temp;
    }
    for(var i=fromNum+1;i<toNum;i++){
    allCheckboxes[i].checked=eventSrcElement.checked;
    }

    }
    else{
    previousCheckBoxForShift="";//to clear shift-from
    }
    }
    previousCheckBoxForShift=eventSrcElement;
    }</script>
      

  7.   

    if(eventSrcElement.checked==previousCheckBoxForShift.checked && eventSrcElement.name==previousCheckBoxForShift.name)这句再改一下,
    加上&& window.event.shiftKey
    就可以满足我的需求了,谢谢。