本帖最后由 JScainiao 于 2011-01-14 11:07:38 编辑

解决方案 »

  1.   

    这跟cookie有什么关系?
    为什么要用隐藏层?
    用cookie放到了隐藏层中,合到一起说更迷糊为什么不用一个数组,把选中的酒店压入, 然后..
      

  2.   

    点击加入的时候保存进COOKIE的那个函数没贴。。
    建议保存的时候以数组的形式,类似1,2,3这样
    1.当选择三家酒店,在次点击加入对比时 ,提示用户“您只能选择三家酒店进行比”。
    点击加入对比的时候先判断逗号的数量是否超过两个。2.当隐藏层中已经添加了同一个信息时,在次添加将提示“信息已加入,请重新选择” 
    遍历原先的数组,例如1,2,3,判断新传进去的ID是否与其中的有相等。如果有相等的,就弹出提示,RETURN FALSE;
      

  3.   

    其实希望达成的效果就像这样http://hotel.elong.com/listb_cn_0101_0_0_-1_0_6_1_34.html#?
      

  4.   

    那你就要在每一个input中加入ID   然后循环你传进来的id和已经有的id做对比
      

  5.   

    你这个隐藏层就为了 记录数据?如果是的话var globalSelect=[] //保存已经选择的酒店ID
    function add(id){添加一个酒店,要判断是否已经选择了}
    function saveSelect(){保存选择的酒店ID数组 根据策略实现}
    function getSelect(){恢复以前选择的酒店ID数组 根据策略实现}接口和结构都有了 去实现吧
      

  6.   

    content += '<input type="checkbox" value="'+i+'">' + hotelname[i] + '&nbsp;&nbsp<a href="#" onclick=delCookie("'+i+'")>删除</a><br>';
    建议你把这段话用div包起来 , 然后加入的时候要给div一个id  然后对比的时候就拿ID去对比就好了
      

  7.   

    当点击触发addcookie时cookie就记录一个酒店名称,添加第二个用符合隔开。addcookie首先拆分分隔符看是否够三个,超出时contrast的innerHTML等于“您只能选择三家酒店进行比”然后再判断拆分的cookie数组中是否包含新加入的名称
      

  8.   

    不管用不用cookie都可以形成一个数组,主要对数组进行判断,别忘了把用户的选项存入cookie就行了,用户如果刷新了页面就从cookie中取出原来的选项恢复数组
      

  9.   


    获取隐藏层中所有的id是这个么document.cookie
      

  10.   

    function addcookie(hotelid,hotelname)
      {
        if(document.getElementById("dvCompare").getElementsByTagName("input").length >= 3 )
            {
              alert("只能加入三个对比");
            }
    else if(document.cookie == hotelid )
     {
      alert ("已有相同的酒店");
     }
     else{
    setCookie("hotelid",hotelid);
    setCookie("hotelname",hotelname);        
    show();
                  }
      }
      

  11.   

    var hotelid = getCookieArray('hotelid');
            var hotelname = getCookieArray('hotelname');
    这两个获取不到值   你那里可以吗
      

  12.   


    这个么?
    function delCookie(n)
        {
            var hotelid = getCookieArray('hotelid');
            var hotelname = getCookieArray('hotelname');
            deleteAllCookie('hotelid');
            deleteAllCookie('hotelname');
            for (var i=0;i<hotelid.length-1;i++)
            {
                if (i != n) 
                {
                    setCookie("hotelid",hotelid[i]);
                    setCookie("hotelname",hotelname[i]);
                }
            }
            show();
        }
      

  13.   

    如果可以你看看这个代码
    <script language="javascript">
    function addcookie(hotelid,hotelname)
      {
         if(document.getElementById("dvCompare").getElementsByTagName("input").length >= 3 )
            {
              alert("只能加入三个对比");
      
            }else{
    var add_hotles = document.getElementById("dvCompare").getElementsByTagName("input");
    for( i=0 ; i<add_hotles.length ; i++ )
    {
    if(add_hotles[i].id == "hotelid_"+hotelid)
    {
    alert("重复添加");
    return false;
    }
    }
                setCookie("hotelid",hotelid);
                setCookie("hotelname",hotelname);        
                show();
             }  }function setCookie(name,value)//两个参数,一个是cookie的名子,一个是值
        {
             document.cookie = name + "="+ getCookie(name) + escape (value)  + ","; 
        }function getCookie(name)
        {
           var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
           if(arr != null) return unescape(arr[2]); return '';
        }function deleteAllCookie(name) 
        {
                var date = new Date();
                date.setTime(date.getTime() - 10000); //删除一个cookie,就是将其过期时间设定为一个过去的时间
                document.cookie = name + "=删除" + "; expires=" + date.toUTCString();            
        }function delCookie(n)
        {
            var hotelid = getCookieArray('hotelid');
            var hotelname = getCookieArray('hotelname');
            deleteAllCookie('hotelid');
            deleteAllCookie('hotelname');
            for (var i=0;i<hotelid.length-1;i++)
            {
                if (i != n) 
                {
                    setCookie("hotelid",hotelid[i]);
                    setCookie("hotelname",hotelname[i]);
                }
            }
            show();
        }function getCookieArray(name)
        {
            return getCookie(name).split(",");     
        }function show()
        {
            var content = '';
            var hotelid = getCookieArray('hotelid');
            var hotelname = getCookieArray('hotelname');
            
            for (var i=0;i<hotelid.length-1;i++)
            {
                content += '<input type="checkbox" id="hotelid_"'+hotelid+'" value="'+i+'">' + hotelname[i] + '&nbsp;&nbsp<a href="#" onclick=delCookie("'+i+'")>删除</a><br>';
            }
            document.getElementById("dvCompare").innerHTML=content; 
            document.getElementById("contrast_flayer").style.display="block";     
        }
        
        function cl()
            {    
             document.getElementById("contrast_flayer").style.display="none"; 
            document.getElementById("contrast").style.display="block"; 
            }
        function hidden()
        {
            document.getElementById("contrast_flayer").style.display="block"; 
            document.getElementById("contrast").style.display="none"; 
        }    function clearAllCookies()
        {
            var LSTR_Cookie = window.document.cookie;
            var LREG_Cookie = new RegExp().compile("([^;]+=)[^;]+","g");
            var LARY_cookie = null;
            
            while(LARY_cookie = LREG_Cookie.exec(LSTR_Cookie))
            {
                window.document.cookie = LARY_cookie[1]
            }
            show();
        } </script>
      <link rel="stylesheet" rev="stylesheet" href="http://www.elongstatic.com/common/css/elong_common.css?201101101435"   type="text/css" media="all" />
      <link rel="stylesheet" rev="stylesheet" href="http://www.elongstatic.com/hotels/css/Domestic_hotels201005.css?201101101435"   type="text/css" media="all" /> 
    <body>
           <div id="shuliang" >
            <li><a href="#?">
                <span class="Add">北京西苑饭店</span></a>
                <input type="button" mth="showcompare" title="对比" value="加入对比"  onclick="addcookie('40','北京西苑饭店')">
            </li>
            
            <li><a href="#?">
                <span class="Add">北京艺海商务酒店</span></a>
                <input type="button"  value="加入对比" mth="showcompare"   onclick="addcookie('41','北京艺海商务酒店')">
            </li>
            
            <li><a href="#?" >
                <span class="Add">北京金龙潭大饭店</span></a>
                <input type="button" value="加入对比"  mth="showcompare"    onclick="addcookie('42','北京金龙潭大饭店')">
            </li>
            
            <li><a href="#?" >
                <span class="Add">北京美泉宫饭店</span></a>
                <input type="button" value="加入对比" mth="showcompare"  onclick="addcookie('43','北京美泉宫饭店')">
            </li>
                
            <li><a href="#?">
                <span class="Add">富驿时尚酒店(北京中关村店)</span></a>
                <input type="button" value="加入对比" mth="showcompare"  onclick="addcookie('44','富驿时尚酒店(北京中关村店)')">
            </li>
            </div>
    <div style="display:none; " id="contrast" onClick="hidden() " > aaaaaaaaa</div><div id="contrast_flayer" style="display:none;">
      <h2>
          <span class="right pr5 pt5">
          <a  id="compareClose" href="#?" class="com_close" ></a>
        </span>开始对比
     </h2> 
       <div class="box" id="dvCompare" >
        <ul>
        </ul>
       </div>
          <p class="box">
          <input type="button"  value="开始对比" onmouseout="this.className='com_search75'" onmouseup="this.className='com_search75'" onmousedown="this.className='com_search75_an'" class="com_search75">
       &nbsp;&nbsp; <a href="#?" onclick="clearAllCookies()" title="清空">清空</a>
        </p>
        <p class="box"><a href="#" onclick="cl()">收起</a></p>
       </div>
    </body>
    </html>
      

  14.   

    内存中一个数组,操作数组就可以了!页面 unload  把数组 拼接成字符串 保存到cookie页面加载 ,读cookie,分割字符串成数组就可以了字符串公司可以是: 1,XXX酒店#2,YYY酒店
      

  15.   

    这两个能得到值吗function show()
        {
            var content = '';
            var hotelid = getCookieArray('hotelid');
            var hotelname = getCookieArray('hotelname');

            
            for (var i=0;i<hotelid.length-1;i++)
            {
                content += '<input type="checkbox" id="hotelid_"'+hotelid+'" value="'+i+'">' + hotelname[i] + '&nbsp;&nbsp<a href="#" onclick=delCookie("'+i+'")>删除</a><br>';
            }
            document.getElementById("dvCompare").innerHTML=content; 
            document.getElementById("contrast_flayer").style.display="block";     
        }
      

  16.   

    可以 一个是cookie名 一个是id
      

  17.   

    cookie 每一个值用 , 分隔开  getCookieArray 直接以数组形式返回 cookie的内容
      

  18.   

    <script language="javascript">
    function addcookie(hotelid,hotelname)
      {
         if(document.getElementById("dvCompare").getElementsByTagName("input").length >= 3 )
            {
              alert("只能加入三个对比");
      
            }else{
    var add_hotles = document.getElementById("dvCompare").getElementsByTagName("input");
    for( i=0 ; i<add_hotles.length ; i++ )
    {
    if(add_hotles[i].id == "hotelid_"+hotelid)
    {
    alert("重复添加");
    return false;
    }
    }
                setCookie("hotelid",hotelid);
                setCookie("hotelname",hotelname);        
                show();
             }  }function setCookie(name,value)//两个参数,一个是cookie的名子,一个是值
        {
             document.cookie = name + "="+ getCookie(name) + escape (value)  + ","; 
        }function getCookie(name)
        {
           var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
           if(arr != null) return unescape(arr[2]); return '';
        }function deleteAllCookie(name) 
        {
                var date = new Date();
                date.setTime(date.getTime() - 10000); //删除一个cookie,就是将其过期时间设定为一个过去的时间
                document.cookie = name + "=删除" + "; expires=" + date.toUTCString();            
        }function delCookie(n)
        {
            var hotelid = getCookieArray('hotelid');
            var hotelname = getCookieArray('hotelname');
            deleteAllCookie('hotelid');
            deleteAllCookie('hotelname');
            for (var i=0;i<hotelid.length-1;i++)
            {
                if (i != n) 
                {
                    setCookie("hotelid",hotelid[i]);
                    setCookie("hotelname",hotelname[i]);
                }
            }
            show();
        }function getCookieArray(name)
        {
            return getCookie(name).split(",");     
        }function show()
        {
            var content = '';
            var hotelid = getCookieArray('hotelid');
            var hotelname = getCookieArray('hotelname');
            
            for (var i=0;i<hotelid.length-1;i++)
            {
                content += '<input type="checkbox" id="hotelid_'+hotelid[i]+'" value="'+i+'">' + hotelname[i] + '&nbsp;&nbsp<a href="#" onclick=delCookie("'+i+'")>删除</a><br>';
            }
            document.getElementById("dvCompare").innerHTML=content; 
            document.getElementById("contrast_flayer").style.display="block";     
        }
        
        function cl()
            {    
             document.getElementById("contrast_flayer").style.display="none"; 
            document.getElementById("contrast").style.display="block"; 
            }
        function hidden()
        {
            document.getElementById("contrast_flayer").style.display="block"; 
            document.getElementById("contrast").style.display="none"; 
        }    function clearAllCookies()
        {
            var LSTR_Cookie = window.document.cookie;
            var LREG_Cookie = new RegExp().compile("([^;]+=)[^;]+","g");
            var LARY_cookie = null;
            
            while(LARY_cookie = LREG_Cookie.exec(LSTR_Cookie))
            {
                window.document.cookie = LARY_cookie[1]
            }
            show();
        } </script>
      <link rel="stylesheet" rev="stylesheet" href="http://www.elongstatic.com/common/css/elong_common.css?201101101435"   type="text/css" media="all" />
      <link rel="stylesheet" rev="stylesheet" href="http://www.elongstatic.com/hotels/css/Domestic_hotels201005.css?201101101435"   type="text/css" media="all" /> 
    <body>
           <div id="shuliang" >
            <li><a href="#?">
                <span class="Add">北京西苑饭店</span></a>
                <input type="button" mth="showcompare" title="对比" value="加入对比"  onclick="addcookie('40','北京西苑饭店')">
            </li>
            
            <li><a href="#?">
                <span class="Add">北京艺海商务酒店</span></a>
                <input type="button"  value="加入对比" mth="showcompare"   onclick="addcookie('41','北京艺海商务酒店')">
            </li>
            
            <li><a href="#?" >
                <span class="Add">北京金龙潭大饭店</span></a>
                <input type="button" value="加入对比"  mth="showcompare"    onclick="addcookie('42','北京金龙潭大饭店')">
            </li>
            
            <li><a href="#?" >
                <span class="Add">北京美泉宫饭店</span></a>
                <input type="button" value="加入对比" mth="showcompare"  onclick="addcookie('43','北京美泉宫饭店')">
            </li>
                
            <li><a href="#?">
                <span class="Add">富驿时尚酒店(北京中关村店)</span></a>
                <input type="button" value="加入对比" mth="showcompare"  onclick="addcookie('44','富驿时尚酒店(北京中关村店)')">
            </li>
            </div>
    <div style="display:none; " id="contrast" onClick="hidden() " > aaaaaaaaa</div><div id="contrast_flayer" style="display:none;">
      <h2>
          <span class="right pr5 pt5">
          <a  id="compareClose" href="#?" class="com_close" ></a>
        </span>开始对比
     </h2> 
       <div class="box" id="dvCompare" >
        <ul>
        </ul>
       </div>
          <p class="box">
          <input type="button"  value="开始对比" onmouseout="this.className='com_search75'" onmouseup="this.className='com_search75'" onmousedown="this.className='com_search75_an'" class="com_search75">
       &nbsp;&nbsp; <a href="#?" onclick="clearAllCookies()" title="清空">清空</a>
        </p>
        <p class="box"><a href="#" onclick="cl()">收起</a></p>
       </div>
    </body>
    </html>