首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么window.onload只能在第一个数组值上按预期工作,而我必须为其他数组值重新加载页面?

为什么window.onload只能在第一个数组值上按预期工作,而我必须为其他数组值重新加载页面?
EN

Stack Overflow用户
提问于 2019-04-09 21:52:59
回答 1查看 49关注 0票数 0

我需要根据页面名称是否包含在数组中来隐藏一些内容,但只能让它在数组中的第一项上正常工作。

我一直在使用下面的代码,并取得了一定程度的成功。

代码语言:javascript
复制
window.onload = function () {
  var url = window.location.href;
  var string_contains = ['careers', 'accessibility', 'privacy', 'cookie-policy', 'legal', 'terms-of-business', 'sitemap',  'search'];

  for(var i =0;i < string_contains.length; i++){
    if(url.indexOf(string_contains[i]) != -1) {
      var x = document.getElementsByClassName("embeddedServiceHelpButton");
      for(var a = 0;a<x.length;a++) {
        x[a].style.display = 'none';
      }
    }
  }
  console.log(a);
}

我希望我的embeddedServiceHelpButton类内容对数组中指定的所有页面都是隐藏的。

但是,它每次只对数组中的第一项有效,但对于数组中的后续项则不起作用,除非我再次重新加载页面,这并不理想。

任何和所有的帮助都非常感谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-09 22:48:39

很难确切了解发生了什么,但使用基于CSS的解决方案可能会更好。您需要对发布的代码进行修改,并添加一个带有CSS规则的<style>元素:

代码语言:javascript
复制
window.onload = function () {
  var url = window.location.href;
  var string_contains = ['careers', 'accessibility', 'privacy', 'cookie-policy', 'legal', 'terms-of-business', 'sitemap',  'search'];

  for(var i =0;i < string_contains.length; i++){
    if(url.indexOf(string_contains[i]) != -1) {
      document.body.classList.add("hide-service-buttons");
      break;
    }
  }
  console.log(a);
}

CSS规则:

代码语言:javascript
复制
<style>
  body.hide-service-buttons .embeddedServiceHelpButton {
    display: none;
  }
</style>

这样,即使在页面加载很长时间后才添加按钮,也不会显示按钮。(可能存在冲突的CSS规则,但这种方法最终应该是成功的。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55594534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档