您需要修复代码以使用正确的函数名称并将该函数的返回结果作为数组处理。它应该可以正常工作,除非在没有的非常旧的浏览器中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>
PS<p>
标签是显示:块,而不是显示:内联。
对于较旧的浏览器,最好的办法是使用一个预先构建的选择器引擎,它将为您解决所有跨浏览器问题。我使用过 YUI、jQuery 和 Sizzle(Sizzle 是 YUI 和 jQuery 中的选择器引擎)。都是免费的而且非常好。
如果您必须保持原生 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();
});
});