2017-06-12 6 views
1

私はこのための解決策を見つけるのを躊躇しています。 目の不自由な人のためのテキストサイズのスイッチャを作成することです。 クラス小、中、大の3つのスパン要素を作成しましたクッキーを使ってボディークラスを切り替える

そして、私はほとんど仕事を終わらせるコードを持っていますが、そのクッキーの部分が必要です。

Cookieを使用して選択内容を保存し、ページの更新後に追加するにはどうすればよいですか? Cookieの設定に関する多くのスタックオーバーフローの記事を読んでいますが、それらのすべてに1つのトグルしかありません。ここに私は3つあります。

JSFIDDLE HERE

多くの感謝!

答えて

0

$(document).ready(function(){ 
 
    $(".font-toggle span").click(function() { 
 
     var size = $(this).attr('class'); 
 
     $("body").attr("id", size); 
 
     if($.cookie('mycookie') == 'valueOfCookie'){ 
 
      $.cookie('mycookie', ''); 
 
     } 
 
     else{ 
 
      $.cookie('mycookie', 'valueOfCookie'); 
 
     } 
 
     
 
     return false; 
 
    }); 
 
    if($.cookie('mycookie') == 'valueOfCookie'){ 
 
     $("body").attr("id", 'big-font'); 
 
    } 
 
    else{ 
 
     $("body").removeAttr("id"); 
 
    } 
 
});
#big-font{ 
 
    font-size: 40px; 
 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
<script type="text/javascript" src="https://github.com/carhartl/jquery-cookie/releases/download/v1.4.1/jquery.cookie-1.4.1.min.js"></script> 
 

 

 
<div class="font-toggle"> 
 
    <span class="big-font"> 
 
    Button 
 
    </span> 
 
</div> 
 
<div> 
 
    Text To Show 
 
</div>

+0

これは、1つのトグルでのみ機能します。すべてのクラストグル後に新しいCookieをクリアして追加する必要があります。私がspan.smallをクリックすると、私はスパイをクリックした後に小さなバスト、バストを設定します。大きな前のクッキーを削除し、それを大きくリセットします。今は私が探していたものではありません。 – StackSurfer

+0

上記のコードがこのように役立つかもしれないことを確認してください –

0

多分これはあなたのために動作します。

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
<script type="text/javascript" src="https://github.com/carhartl/jquery-cookie/releases/download/v1.4.1/jquery.cookie-1.4.1.min.js"></script> 
<script> 
    "use strict"; 


    $(document).ready(function() { 
    let eyesight = $.cookie('eyesight'); 

    if (eyesight != undefined) { 
     $("body").addClass(eyesight); 
    } else 
     setEyesight('medium'); // Default size 

    $(".font-toggle span").click(function() { 
     setEyesight($(this).attr('class')); 
    }); 
    }); 


    function setEyesight(size) { 
    let eyesight = $.cookie('eyesight'); 

    if (eyesight != undefined) { 
     $("body").removeClass(eyesight); 
     $.removeCookie('eyesight'); 
    } 

    $("body").addClass(size); 
    $.cookie('eyesight', size); 
    } 
</script> 
+0

はい、それは意図した通りに動作します。しかし、間違いなく、スパンクリックで大きな値が設定されていれば、それは機能します。ページをリフレッシュした後も引き続き動作します。さて、その他のクラスsmallをクリックした後、大きなクラスを削除し、クラスsmallを設定します。今度はページ変更後に元のクラスが戻ってきます。すべてのページには独自のクラスがあります。ドメイン全体にグローバルCookieを設定できますか? – StackSurfer

+0

ウェルクッキーは常にドメイン全体に設定されます。このスクリプトはすべてのページに含まれていますか? –

+0

また、スクリプトを少し編集しました。 –

0

これはどうですか?

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
<script type="text/javascript" src="https://github.com/carhartl/jquery-cookie/releases/download/v1.4.1/jquery.cookie-1.4.1.min.js"></script> 
<script> 
    "use strict"; 

    $(document).ready(function() { 
    let eyesight = new Eyesight(); 
    eyesight.initialize(); 

    $(".font-toggle span").click(function() { 
     eyesight.set($(this).attr('class')); 
    }); 
    }); 

    function Eyesight() { 
    let self = this; 
    let name = "eyesight"; 
    let current = null; 
    let _default = "medium"; 
    let data = $.cookie(name); 

    // initialzie 
    this.initialize = function() { 
     if (data!= undefined) { 
     $("body").addClass(data); 
     current = data; 
     } else 
     self.set(_default); // Default size 

     // init cookie listener 
     self.listener(); 
    }; 

    // set eyesight function 
    this.set = function(size) { 
     if (data != undefined) { 
     $("body").removeClass(data); 
     $.removeCookie(name); 
     } 

     $("body").addClass(size); 
     $.cookie(name, size); 
     current = size; 
    }; 

    // eyesight cookie listener function 
    this.listener = function() { 
     setTimeout(function() { 
     let cookie = $.cookie(name); 

     if (cookie != undefined && cookie != current) 
      self.set(cookie); 

     self.listener(); 
     }, 100); 
    }; 
    } 
</script> 
+0

これは少し上手ですが、まだ動作していません。 例が役に立ちますか? https://www.eesti.ee/eng/ このページには、メニューを切り替える「視覚障害者用の」リンクがあり、そこには私のウェブサイトに必要な同様の機能があります。 – StackSurfer

関連する問題