gpt4 book ai didi

javascript - 如何使用 Java Script 显示/隐藏具有相同类的所有标签?

转载 作者:行者123 更新时间:2023-11-30 09:06:25 24 4
gpt4 key购买 nike

我需要一个 javascrit 函数来显示/隐藏 HTML 文档中具有特定类(t1、t2 或 t3)的所有 span 标签。示例:

<script type="text/javascript">
<!--
function sh(t){//show_hide(text number class)
//???
}
//-->
</script>

<div id='C'>
<p>
<span class="P">
Normal allways visible text.
<span class="t1">Text 1</span>
<span class="t2">Text 2</span>
<span class="t3">Text 3</span>
Normal allways visible text.
</span>
</p>
<p>
<span class="P">
Normal allways visible text.
<span class="t1">Text 1</span>
<span class="t2">Text 2</span>
<span class="t3">Text 3</span>
Normal (allways visible text.
</span>
</p>
<p><span>Normal allways visible text.</span></p>
</div>

函数 sh (show hide) 可以这样触发:

<p>Show: <a href="#" onclick="sh('t1');">text 1</a> | <a href="#" onclick="sh(t2);">text 2</a> | <a href="#" onclick="sh(t3);">text 3</a></p>

一个重要的细节是,当跨度类 t1 可见时,所有其他跨度类 t2 和 t3 都是隐藏的。默认是在第一次加载时让所有跨度类 t1 可见。

非常感谢。


人们已经得到了我需要的东西。有两种解决方案:

纯Javascript: http://jsfiddle.net/4DREQ/

在 JQuery 的帮助下: http://jsfiddle.net/v3vWM/3/

最佳答案

由于并非所有浏览器都支持所有方法(例如 IE 不支持 getElementsByClassName ,我建议使用类似 jQuery 的库,这使得跨浏览器 DOM 访问变得非常容易。

但幸运的是,getElementsByTagNamesupported by all browsers ,所以你可以这样做:

var spans = document.getElementsByTagName('span');

function sh(cls) {
for (var i = spans.length; i--;) {
var element = spans[i];
if (element.className.match(RegExp('\\b' + cls + '\\b'))) {
element.style.display = (element.style.display === 'none') ? '' : 'none';
}
}
}

我不知道您想隐藏或显示哪些跨度,所以我假设您要切换一组的可见性。如果您打算像我一样只获取 span 元素一次,那么您必须将脚本放在内容之后(在结束 <body> 标记之前)。否则将找不到 span 元素。

DEMO


如果支持,使用 document.querySelectorAll 可能会更好。你可以这样做:

window.sh = (function() {
function toggleVisibility(element) {
element.style.display = (element.style.display === 'none') ? '' : 'none';
}

if(typeof document.querySelectorAll === 'function') {
return function(cls) {
var spans = document.querySelectorAll('span.' + cls);
for (var i = spans.length; i--;) {
toggleVisibility(spans[i]);
}
};
}
else {
var spans = document.getElementsByTagName('span');
return function(cls) {
for (var i = spans.length; i--;) {
var element = spans[i];
if (element.className.match(RegExp('\\b' + cls + '\\b'))) {
toggleVisibility(element);
}
}
};
}
}());

这会检查一次是否querySelectorAll支持创建适当的 sh功能。

DEMO 2

关于javascript - 如何使用 Java Script 显示/隐藏具有相同类的所有标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4686980/

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