简体   繁体   English

网页上的 Javascript 空白页

[英]Javascript blank page on web

I wanted to make my webpage a multi language page so I used the following js code:我想让我的网页成为多语言页面,所以我使用了以下 js 代码:

let langs = ['en', 'it', 'sp', 'sv', 'de', 'pt', 'nl'];
let lang = 'en';
setLangStyles(lang);

function setStyles(styles) {
  var elementId = '__lang_styles';
  var element = document.getElementById(elementId);
  if (element) {
    element.remove();
  }

  let style = document.createElement('style');
  style.id = elementId;
  style.type = 'text/css';

  if (style.styleSheet) {
    style.styleSheet.cssText = styles;
  } else {
    style.appendChild(document.createTextNode(styles));
  }
  document.getElementsByTagName('head')[0].appendChild(style);
}

function setLang(lang) {
  setLangStyles(lang);
}

function setLangStyles(lang) {
  let styles = langs
    .filter(function (l) {
      return l != lang;
    })
    .map(function (l) {
      return ':lang('+ l +') { display: none; }';
    })
    .join(' ');

  setStyles(styles);
}

I named it "lang.js" and I tagged it on my html this way:我将它命名为“lang.js”,并以这种方式在我的 html 上标记它:

<!-- jquery -->
<script src="js/jquery-2.1.4.min.js"></script>
<!-- Bootstrap -->
<script src="js/bootstrap.min.js"></script>
<script src="js/scripts.js"></script>
<script src="js/lang.js"></script>

Locally it works perfectly, but when it's on server, it doesn't open the webpage at all, all I see is a blank page.在本地它工作得很好,但是当它在服务器上时,它根本没有打开网页,我看到的只是一个空白页面。

I tried also to write it inside the html with script> tag, it didn't work either.我也尝试将它写在带有 script> 标签的 html 中,它也不起作用。

In network tab of dev tools, the jquery-2.1.4.min.js file and bootstrap files showing as 200 status.在开发工具的网络选项卡中,jquery-2.1.4.min.js 文件和引导文件显示为 200 状态。

There are no errors on console控制台上没有错误

Can anyone help please?有人可以帮忙吗?

Thank you in advance先感谢您

Here is my version of your function.这是我的函数版本。 It loops through the array of langs, then grabs a queryselectorAll of the matching lang elements.它循环遍历 langs 数组,然后获取一个queryselectorAll匹配的 lang 元素。 If the passed language matches the array element in the loop the display is set to block, else its set to none.如果传递的语言与循环中的数组元素匹配,则显示设置为阻塞,否则设置为无。

 langs = ["en", "es"]; function setLangStyles(lang) { for (z = 0; z < langs.length; z++) { l = langs[z] objs = document.querySelectorAll(":lang(" + l + ")"); objs.forEach(function(el) { el.style.display = (l == lang) ? "block" : "none"; }); } } btns = document.querySelectorAll("button"); btns.forEach(function(e){ e.addEventListener("click",function(ev){ setLangStyles(ev.target.dataset.lang); }); }); setLangStyles("es");
 <div lang="en">EN</div> <div lang="es">ES</div> <button type="button" data-lang="es">View ES</button> <button type="button" data-lang="en">View EN</button>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM