gpt4 book ai didi

javascript - 使用 getElementByClass 隐藏多个元素的替代方法是什么?

转载 作者:行者123 更新时间:2023-12-02 20:07:47 24 4
gpt4 key购买 nike

我有一个页面,其中有一些链接,我希望能够使用两个按钮进行切换。它使用 getElementById 与一个链接配合使用,但我需要切换其中的几组。我从这个开始,但没有成功。我听说 getElementByClass 适用于除 IE 之外的所有浏览器,但我使用的是 Opera 11.5,但它仍然无法工作。我做了一些搜索,但我对 javascript 有点陌生,并且不理解大部分解释。有人可以帮助我提供一个简单的替代方案,或者帮助我解决我遇到的问题吗?这是我正在使用的测试页。

<head>
<script type="text/javascript">
function hideNames()
{
document.getElementByClass("webname").style.display="none";
}
function showNames()
{
document.getElementByClass("webname").style.display="inline";
}
</script>
</head>
<body>
<p class="webname">Webname</p>
<p class="webname">test</p>
<input type="button" onclick="hideNames()" value="Hide Web Names" />
<input type="button" onclick="showNames()" value="Show Web Names" />
</body>

最佳答案

您需要修复代码以使用正确的函数名称并将该函数的返回结果作为数组进行处理。它应该可以正常工作,除非在没有 getElementsByClassName 的非常旧的浏览器中(这是 IE9 之前的所有 IE 版本)。可以使用一些替代品,虽然效率不高,但可以通过过滤文档中的所有标签来工作。

如果您只想要单个元素,请使用 document.getElementById("idvalue")并针对 id 而不是类名进行操作。 getElementById即使在旧浏览器中也得到广泛支持。

以下是您的代码如何使用类名工作:

<head>
<script type="text/javascript">
function hideNames()
{
var list = document.getElementsByClassName("webname");
for (var i = 0; i < list.length; i++) {
list[i].style.display="none";
}
}

function showNames()
{
var list = document.getElementsByClassName("webname");
for (var i = 0; i < list.length; i++) {
list[i].style.display="block";
}
}

</script>
</head>
<body>
<p class="webname">Webname</p>
<p class="webname">test</p>
<input type="button" onclick="hideNames()" value="Hide Web Names" />
<input type="button" onclick="showNames()" value="Show Web Names" />
</body>

附注<p>标签是display: block,而不是display: inline。

对于较旧的浏览器,最好的办法是使用预构建的选择器引擎,它可以为您解决所有跨浏览器问题。我使用过 YUI、jQuery 和 Sizzle(Sizzle 是 YUI 和 jQuery 内部的选择器引擎)。一切都是免费的,而且非常好。

如果您必须保留 native JavaScript,您也可以获取一些代码来实现您自己的 getElementsByClassName。以下是一些来源:http://ejohn.org/blog/getelementsbyclassname-speed-comparison/http://robertnyman.com/2008/05/27/the-ultimate-getelementsbyclassname-anno-2008/ .

<小时/>

为了向您展示 jQuery 这一切是多么简单,下面是完整的代码:http://jsfiddle.net/jfriend00/qP3XZ/ .

HTML 是这样的:

<p class="webname">Webname</p>
<p class="webname">test</p>
<input id="hide" type="button" value="Hide Web Names" />
<input id="show" type="button" value="Show Web Names" />

代码是这样的:

$(document).ready(function() {
$("#hide").click(function() {
$(".webname").hide();
});

$("#show").click(function() {
$(".webname").show();
});
});

关于javascript - 使用 getElementByClass 隐藏多个元素的替代方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7279654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com