当前位置: 首页 > 面试题库 >

如何使用JavaScript获得getElementByClass而不是GetElementById?

皇甫展
2023-03-14
问题内容

我试图根据每个DIV的类别切换网站上某些DIV元素的可见性。我正在使用基本的JavaScript代码片段进行切换。问题在于该脚本仅使用getElementById,而getElementByClassJavaScript不支持。不幸的是,我必须使用class而不是id来命名DIV,因为DIV名称是由我的XSLT样式表使用某些类别名称动态生成的。

我知道某些浏览器现在支持getElementByClass,但是由于Internet Explorer不支持,所以我不想走这条路。

我发现脚本使用函数来按类获取元素(例如此页面上的#8:),但是我不知道如何集成它们与我的切换脚本一起使用。

这是HTML代码。DIV本身缺失,因为它们是在XML / XSLT页面加载时生成的。

主要问题:如何获取下面的Toggle脚本以按类获取Element而不是按ID获取Element?

<html>

<head>

<!--This is the TOGGLE script-->
<script type="text/javascript">
<!--
    function toggle_visibility(id) {
       var e = document.getElementById(id);
       if(e.style.display == 'block')
          e.style.display = 'none';
       else
          e.style.display = 'block';
    }
//-->
</script>

</head>

<!--the XML/XSLT page contents will be loaded here, with DIVs named by Class separating dozens of li's-->

<a href="#" onclick="toggle_visibility('class1');">Click here to toggle visibility of class 1 objects</a>

<a href="#" onclick="toggle_visibility('class2');">Click here to toggle visibility of class 2 objects</a>

</body>
</html>

问题答案:

现代浏览器支持document.getElementsByClassName。您可以在caniuse上看到哪些供应商提供此功能的完整详细信息。如果您希望将支持扩展到较旧的浏览器中,则可能需要考虑使用选择器引擎,例如jQuery或polyfill。

较旧的答案

您将需要签入jQuery,这将允许以下操作:

$(".classname").hide(); // hides everything with class 'classname'

Google提供了一个托管的jQuery源文件,因此您可以引用它,并在稍后启动和运行它。在页面中包括以下内容:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
  $(function(){
    $(".classname").hide();
  });
</script>


 类似资料:
  • 我有两个外部呼叫 这给了未来[Seq[人]] 它接受person_id,并将person_status返回为 Future[String] 我需要使用第一次呼叫中可用序列的第二次呼叫来更新每个人的状态。这就是我尝试的方式,

  • 问题内容: 这个问题的答案是 社区的努力。编辑现有答案以改善此职位。它当前不接受新的答案或互动。 使用 Chrome中* 较新的 ASP.NET Web API ,我看到的是XML-如何更改它以请求 JSON, 以便可以在浏览器中查看它?我相信这只是请求标头的一部分,我是否正确? *** 问题答案: 我只是在我的MVC Web API 项目中的类中添加以下内容。 这样可以确保您在大多数查询中都获取

  • 问题内容: 我正在使用AngularJS,它很棒。我在文档中找不到它-Java语言中与此AngularJS表达式等效的功能是什么: 谢谢您的帮助。 问题答案: 它在Angular的过滤器文档中: 在HTML模板绑定中 {{filter_expression | filter:expression}} 在JavaScript中 $ filter(’filter’)(数组,表达式) 在您的情况下,它看

  • 问题内容: 我想做的是从而不是从Volley库中使用一些数据。 以下是用于从服务器中获取JSON对象的代码。 我试图改变到后改为。但这并没有解决。 问题答案: 中的url 不是可选的,并且JSONObject参数用于将带有请求的参数发布到url。 从文档中:http : //afzaln.com/volley/com/android/volley/toolbox/JsonObjectRequest

  • 问题内容: 看到代码: 问题答案: 较新的编辑: 自从最初发布此问题以来,很多事情已经发生了变化-wallacer的修订后的答案以及VisioN的出色表现中有很多非常好的信息 编辑: 仅仅因为这是公认的答案;wallacer的答案确实好得多: 我的旧答案: 应该做。 编辑: 为了回应PhiLho的评论,请使用类似以下内容的内容:

  • 问题内容: 我找到了一篇有用的文章,解释了如何使Jersey使用SLF4J而不是JUL。现在,我的单元测试看起来像(并且很完美): 我的包括以下依赖项: 它运行完美,但是我不想在每个单元测试中都进行相同的配置。这是很明显的代码重复,我想避免。我怎样才能更有效地做到这一点? ps。也许不可能优化上面的代码,而我正在尽力而为? 问题答案: 最好的方法是通过自定义Listener。在JSF servle