2017-10-21 16 views
1

私はJSスクリプトを持っています。ユーザーがダークモードのボタンを押すと、ページはdark_theme.cssに切り替わります(theme.cssはLighモードCSSです)。そして、ユーザーがライトモードボタンを押すと、 theme.cssに戻ります。ですから私の問題は、ユーザーがdarm_theme.cssを使用して別のページを読み込んだり、現在のページをリフレッシュしたりするときにテーマがライトモードに戻ってしまうことです。どういうわけかユーザーの選択/選択を保存するにはどうすればよいですか?そのためすべてのページでダークモードを有効にする方法は?

function swapStyleSheet(sheet){ 
 
    document.getElementById('theme').setAttribute('href', sheet); 
 
}
I have one file called theme.css and one more called dark_theme.css
<link id="theme" rel="stylesheet" type="text/css" href="theme.css"> 
 
...more html here... 
 
<p><button class="colormode" onclick="swapStyleSheet('dark_theme.css')">Dark Mode</button> <button class="colormode" onclick="swapStyleSheet('theme.css')">Light Mode</button></p>

答えて

3

利用のlocalStorage:

function swapStyleSheet(sheet){ 
    document.getElementById('theme').setAttribute('href', sheet); 
    localStorage.setItem("sheet", sheet); 
} 

window.onload = _ => 
swapStyleSheet(
    localStorage.getItem("sheet") || "default.css" 
); 
+0

さて、この作品だけでjsのと同じフォルダと2つのCSSファイルにあるindex.htmlをとabout.htmlページで行います。それは、サブフォルダにある他のページでは機能しません。 – Apost

+0

@apostよく絶対URLが必要です。コードの問題はありません –

+0

どうすれば絶対URLを使用できますか? – Apost

1

あなたはクッキーを使用することができます。 (ここではクッキー機能:https://stackoverflow.com/a/24103596

function swapStyleSheet(sheet){ 
    document.getElementById('theme').setAttribute('href', sheet); 
    createCookie ("sheet", sheet); 
} 
document.addEventListener("DOMContentLoaded", function(event) { 
    var item = readCookie ("sheet") || "default.css"; 
    swapStyleSheet (item); 
}); 
関連する問題