javascript - 精益方法来替换html中的文本?

标签 javascript html css

我需要通过单击一个简单的按钮来替换多个页面上的文本。两种语言之间最精简的切换是什么?

这只会更改第一个 div 中的文本。我需要在整个网站上应用语言更改。

var text1 = document.getElementById('english');
var text2 = document.getElementById('swedish');

const swap = () => {
  if (text1.classList.contains("hidden")) { //if english contains class 'hidden'
    text1.classList.remove("hidden"); //remove hidden class from english
    text2.classList.add("hidden"); //add hidden class to swedish
  } else {
    text1.classList.add("hidden"); //add hidden class to english
    text2.classList.remove("hidden"); //remove hidden class from swedish
  }
}
.hidden {
  display: none;
}
<button onclick="swap()">Switch Text</button>

<div class="content">
  <div id="english">
    <h1>Welcome</h1>
    <p>English text</p>
  </div>
  <div id="swedish" class="hidden">
    <h1>Vällkommen</h1>
    <p>Svensk tekst</p>
  </div>
</div>

最佳答案

  1. 按预期使用lang
  2. 使用classList.toggle

此脚本可以包含在将 lang 设置为任一语言的每个页面上。

将语言更改为您需要的任何内容。 lang="en"/lang="sv"并相应地更改脚本

从包含 localStorage 的行中删除注释 // 并删除您网站上的这一行:let savingLang = "se_SV";

window.addEventListener("DOMContentLoaded", () => {
  //let savedLang = localStorage.getItem("lang") || "gb_EN";
  let savedLang = "se_SV";
  const btn = document.getElementById("swap");
  btn.dataset.lang = savedLang;

  btn.addEventListener("click", (e) => {
    const tgt = e.target;
    let lang = tgt.dataset.lang;
    lang = lang === "gb_EN" ? "se_SV" : "gb_EN";
    tgt.dataset.lang = lang;
    // localStorage.setItem("lang",lang);
    const divs = document.querySelectorAll('div[lang]');
    divs.forEach(div => div.classList.toggle('hidden', div.lang === lang));
  })
  btn.click()
})
.hidden {
  display: none;
}
<button type="button" id="swap" data-lang="gb_EN">Switch Text</button>

<div class="content">
  <div lang="gb_EN">
    <h1>Welcome</h1>
    <p>English text</p>
  </div>
  <div lang="se_SV" class="hidden">
    <h1>Vällkommen</h1>
    <p>Svensk tekst</p>
  </div>
  <div lang="gb_EN">
    <h1>Welcome</h1>
    <p>English text</p>
  </div>
  <div lang="se_SV" class="hidden">
    <h1>Vällkommen</h1>
    <p>Svensk tekst</p>
  </div>
</div>

关于javascript - 精益方法来替换html中的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76070282/

相关文章:

javascript - 如何在不使用对象文字值的情况下从 setter 访问表单数据?

javascript - 运行 jQuery 函数 onclick

jQuery 如果 myDiv 是 :visible, addclass 到另一个元素

javascript - 禁用单选按钮组中的按钮

css - iPad Pro 的媒体查询不适用于 chrome

html - 在不移动文本的情况下增加跨度上的填充

javascript - 使用Javascript动态改变div的宽度

javascript - $ 未定义。我究竟做错了什么?

php - 数据表显示第二个表但没有反应

html - 响应式网格高度问题