2017-02-18 1 views
0

私のウェブサイトの言語を切り替える機能を作ろうとしています。 JavaScriptでクラスを切り替えることでこれをやっていますが、ページをリロードしたり別のクラスに移動したりすると元の状態に戻ります。 JavaScriptが行う変更をどのように保存できますか?私はJavaScriptやPHPトグルされたクラス名を保存するにはどうしたらいいですか?

+1

あなたの質問はあまりクラスについてではなく、ナビゲーション全体にわたってデータを永続させることについてです。そのためには、サーバーまたはクライアント側にステータスを保存する必要があります。 javascriptだけを使用したいので、サーバーソリューションがあります。クライアントソリューションは、クッキーまたはlocalStorage(およびその亜種)に基づいています。 StackOverflowには、これら2つの質問/回答がたくさんあります。 – trincot

+0

あなたはおそらくそれはより良いサーバー側ですが、私はまだ学んでいると私はPHPとjavascriptで高度ではないが、私はそれが大したことではありません答えを得ることができる場合は –

答えて

0

あなたは(あなたがブラウザを閉じたときに、それをクリアするかどうかに応じて、またはsessionStoragelocalStorageを使用することができ、代わりにtextContentを使用してください。

+0

でも動作しますが、htmlで使用すると私は先生に殺されます。それでそれをexterneにする方法があります(そうでなければ、おそらくikはそれを見つけることができます)。 –

+0

その場合は、JavaScriptにPHPとAjaxを使用して、言語の変更をサーバーに送信する必要があります。あるいは、localStorageの代わりにJavaScriptでcookieを持つソリューションを好むなら、私はそれを提供することができますが、2つは本当に違いはありません。 – trincot

+0

私は一度 'window.evenListner'を使ってコードをロードしましたが、ここでは動作しませんでしたが、可能でなければなりません。 –

0

あなたの質問のsessionStorageについて、実際に使用したい

function langToggle() { 
 
    if (document.getElementById("contenten").className == "show") { 
 
    document.getElementById("contenten").className = "hide"; 
 
    document.getElementById("contentnl").className = "show"; 
 
    document.getElementById("myBtn").value = "Nederlands"; 
 

 
    } else{ 
 
    document.getElementById("contenten").className = "show"; 
 
    document.getElementById("contentnl").className = "hide"; 
 
    document.getElementById("myBtn").value = "English"; 
 
    } 
 
}
.hide{ 
 
\t display: none; 
 
} 
 

 
.show{ 
 
\t display: block; 
 
}
<button id="myBtn" onclick="langToggle()" value="English">change language<i class="fa fa-globe"></i></button> 
 

 
<section id="contenten" class="show"> 
 
    English 
 
</section> 
 
<section id="contentnl" class="hide"> 
 
    Dutch 
 
</section>

(でも、IE8でサポートHTML5の機能を、!!!!)。あなたのページ Loadイベントで、その後

function langToggle() { 
    var isNederlands = document.getElementById("contenten").className == "show"; 
    document.getElementById("myBtn").value = sessionStorage["lang"] = isNederlands ? "Nederlands" : "English"; 

    if (document.getElementById("contenten").className == "show") { 
    document.getElementById("contenten").className = "hide"; 
    document.getElementById("contentnl").className = "show"; 

    } else{ 
    document.getElementById("contenten").className = "show"; 
    document.getElementById("contentnl").className = "hide"; 
    } 

} 

そして..::お使いの場合にはhttps://developer.mozilla.org/en/docs/Web/API/Window/sessionStorage

:この機能の詳細

document.getElementById("myBtn").value = sessionStorage["lang"]; 
+0

申し訳ありませんが動作しませんでした。 –

0

あなたはjavascriptで、この目的のためにcookiesまたはsessionStorageを使用することができます。ボタンはあなたが必要とする、value性質を持っていないことを

// Update the display on page load 
document.addEventListener("DOMContentLoaded", showLang); 

function showLang() { 
    // read the last saved language, defaults to 'en' 
    var lang = localStorage.getItem('lang') || 'en'; 
    document.getElementById("contenten").className = lang == 'en' ? 'show' : 'hide'; 
    document.getElementById("contentnl").className = lang == 'nl' ? 'show' : 'hide'; 
    document.getElementById("myBtn").textContent = lang == 'nl' ? 'To English' : "Naar Nederlands"; 
} 

function langToggle() { 
    // read, toggle and update the language in local storage 
    localStorage.setItem('lang', localStorage.getItem('lang') == 'en' ? 'nl' : 'en'); 
    // adapt the display accordingly 
    showLang(); 
} 

注:このような

+0

私はすでにそれを調べましたが、実際に私のコードでそれをどのように使用するのかは分かりません。私はjavascriptで実際には良くないので、使用方法を教えてもよければ –

関連する問題