您需要修复代码以使用正确的函数名称并将该函数的返回结果作为数组处理。它应该可以很好地工作,除非在非常旧的浏览器中没有getElementsByClassName
(这是IE浏览器的所有版本,直到IE9)。有些替代品可以用来代替效率不高的工作,但可以通过筛选文档中的所有标签进行工作。
如果你只想要一个单一的元素,然后使用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>
标签显示:块,不显示:内联。
对于旧版浏览器,最好的办法是使用预先构建的选择器引擎,它将为您解决所有跨浏览器问题。我用过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();
});
});
(一)'getElementByClass'不存在。 (b)即使你使用了正确的方法,你仍然需要迭代该方法返回的所有元素。 –
可能的重复[我们在javascript中getElementsByClassName?](http://stackoverflow.com/questions/1818865/do-we-have-getelementsbyclassname-in-javascript) –