2011-08-09 87 views
2

經過大量試驗和錯誤之後,我設法使用多個下拉框將用戶選擇的值保存到cookie中,有用戶從cookies中選擇預選...Javascript:Cookies,Select Boxes和'document.getElementById'在Internet Explorer中不起作用

...但不在IE中。我的cookie設置功能非常簡單。我有兩個名稱和ID爲'sol'和'pro'的選擇框。當適當的選擇框onChanges和(理想情況下)solCookie和proCookie由代表用戶選擇的索引的單個整數構成時,我會調用下面的函數。

function setSol() { 
    document.cookie= "solCookie=" + document.getElementById('sol').selectedIndex; 
    } 
function setPro() { 
    document.cookie= "proCookie=" + document.getElementById('pro').selectedIndex; 
    } 

Chrome 13很開心,Firefox 5願意玩,但不會! IE9將沒有它!

ie hates cookies

http://imgur.com/a/yOrGd(專輯爲Cookie之外的瀏覽器實例)

^這就是問題所在。^

因此,IE似乎將整行代碼保存到cookie中。我怎樣才能解決這個問題?請記住,我在JavaScript和編碼方面相當新。非常感激!

~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

工作流程,更深入: sol(ution)和pro(風管)選擇框最終是過濾器。各種產品被歸類爲解決方案,類似於國家對城市的關係。這裏是選擇框。

<select name="sol" id="sol" size="1" style="margin-bottom: 0px;" onchange="setSol();populate(this)"> 
    <option value="Choose a Solution">Choose a solution...</option> 
    <option value="Option One">Option One</option> 
    <option value="Option Two">Option Two</option> 
    <option value="Option Three">Option Three</option> 
</select> 
<select name="pro" id="pro" size="1" style="width: 323px; margin-bottom: 0px;" onchange="setPro();javascript:_SFSUBMIT_"> 
</select> 

正如你所看到的,一旦用戶選擇在「索爾」的選項,它會調用setSol(),它集餅乾「solCookie」,然後通話填充()(未上市),填補「親'與其他選項。一旦用戶選擇了一個選項,proCookie通過setPro()存儲,表單被提交,頁面被刷新。

這是我的cookie檢索/選擇框選擇器功能。刷新頁面後,此函數與一個幾乎相同的函數'getSol()'一起運行onLoad,用cookie中的任何內容填充選擇框。

function getPro(cookie_name) { 
    if (document.cookie); { 
     index = document.cookie.indexOf("proCookie"); 
     if (index != -1) { 
      namestart = (document.cookie.indexOf("=", index) + 1); 
      nameend = document.cookie.indexOf(";", index); 
      if (nameend == -1) { 
       nameend = document.cookie.length; 
       } 
      var selPro = document.cookie.substring(namestart,nameend); 
      selPro = parseInt(selPro); 
      } 
     document.getElementById('pro').options[selPro].selected = true; 
     } 
    } 
+0

我的IE是做預期 –

+0

+1對問題的細節...好.... – ManseUK

+0

這似乎是顯而易見的,但顯而易見的事情都忘得:你檢查是否啓用了Cookie? – user2428118

回答

0

嘗試在Cookie上設置過期時間。我從來沒有見過cookie設置的代碼,至少不會傳遞一個空字符串。

function setSol() { 
    var date = new Date(); 
    var tomorrow = new Date(date.getTime() + 24*60*60*1000); 
    document.cookie= "solCookie=" + document.getElementById('sol').selectedIndex + "; expires=" + tomorrow.toUTCString(); 
} 
相關問題