2011-08-09 12 views
2

試行錯誤の末、複数のドロップダウンボックスを使用して、選択したユーザーの値をCookieに保存し、クッキーからあらかじめ選択されたユーザー選択を持ってください。Javascript:Cookie、Select Boxes、 'document.getElementById'がInternet Explorerで動作しない

...しかしIEではありません。私のクッキー設定機能は簡単です。名前とIDが「sol」と「pro」の2つの選択ボックスがあります。適切なselect-box 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(クッキーのための他のブラウザ例のアルバム)

^これが問題です。^

IEはコード全体をクッキーに保存しているようです。これをどうすれば解決できますか?心に留めておいて、私はJavaScriptや一般的なコーディングでかなり新しいです。とても有難い!

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

ワークフロー、詳細: ゾル(ution)とプロ(ダクト)選択ボックスは、最終的にはフィルタです。さまざまな製品は、国家間の関係に類似したソリューションに分類されます。ここには選択ボックスがあります。

<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> 

ユーザーが「ゾル」でオプションを選択したら、あなたは、見ることができるように、それは埋める、クッキー「solCookie」を設定し、()(掲載されていない)移入を呼び出しsetSol()を呼び出し、他のオプションと 'pro'ユーザがオプションを選択すると、proCookieがsetPro()によって格納され、フォームがサブミットされ、ページがリフレッシュされます。

ここに私のCookie-Retrieval/Select-Boxセレクター機能があります。ページがリフレッシュされた後、この関数は実質的に同一の関数 'getSol()'と共にonLoadを実行し、選択ボックスにクッキー内にあったものをすべて埋め込みます。

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

それは明白に見えるかもしれませんが、明らかに物事があまりにも忘れ去られています。クッキーが有効になっているかどうかをチェックしましたか? – user2428118

答えて

0

クッキーに有効期限を設定してみてください。少なくとも空の文字列を渡さないクッキー設定コードは見たことがありません。

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(); 
} 
関連する問題