隐藏具有特定类和属性的链接
-
03-07-2019 - |
题
我有这个html。
<a class="link" href="www.website.com?id=233253">test1</a>
<a class="link" href="www.website.com?id=456456">test2</a>
如何通过使用 href 属性和最后一个数字 (233253) 来隐藏这些链接之一,以隐藏具有此 href 属性和类“link”的链接?
这不是一个有效的代码,只是我为了更好地解释它而整理的代码。getElementsByTagName('a').class('link').href="*233253"
更新:不幸的是它必须是纯 JavaScript,不使用库,并且它必须在 IE6 上工作。
更新2:我无权访问 html
解决方案
<html>
<head>
<script type="text/javascript">
function hideLinks(className, ids) {
var links = document.getElementsByTagName("a");
var max = links.length;
for (var i=0; i<max; i++) {
var link = new RegExp("(\s*)"+ className +"(\s*)");
var isLink = link.test(links[i].className);
if (isLink) {
for (var j=0; j<ids.length; j++) {
var regexp = new RegExp(ids[j] + "<*>quot;);
var hasId = regexp.test(links[i].href);
if (hasId) {
links[i].style.display = "none";
}
}
}
}
}
window.onload = function() {
hideLinks("link", [233253]);
}
</script>
</head>
<body>
<a class="link" href="www.website.com?id=233253">test1</a>
<a class="link" href="www.website.com?id=456456">test2</a>
</body>
</html>
编辑:我在阅读了关于在功能中封装功能的评论后发布了新版本。这个应该和以前的版本一样好。
其他提示
使用jQuery:
$("a.link[href$='233253']").hide();
$ =属性选择器匹配所选属性以给定值结束的所有元素。
[编辑]:代码有些草率,现在应该可以使用了。包括拆分方法(见注释)。
循环遍历a元素,检查href并应用隐藏。像这样:
var refs = document.getElementsByTagName('a');
for (var i=0;i<refs.length;i++) {
if (
refs[i].href &&
refs[i].href.replace(/(\d+$)/,'$1').match('[your value to match]')
) {
refs[i].className = refs[i].className.replace(/link/i,'');
refs[i].style.display = 'none';
}
}
OR
for (var i=0;i<refs.length;i++) {
var hs = refs[i].href.split(/=/)[1];
if ( hs.match([your value to match]) ) {
refs[i].className = refs[i].className.replace(/link/i,'');
refs[i].style.display = 'none';
}
}
没有冒犯,但创建循环对我来说似乎是一种解决方法。如果您可以在链接中添加唯一ID,这显然是首选方法。
之后你可以使用'getElementById'来设置一个不同的类来隐藏特定的链接。
一个链接与另一个链接有何区别?如果您知道服务器端的情况,请添加适当的类名,这些类名将以静态方式从 CSS 中隐藏。
动态确定需要隐藏的内容将需要您动态生成 JavaScript 代码片段,除非您在 HTML 中渲染它。
更新: 如果您无权访问生成的 HTML,那么我的帖子对您没有帮助。
不隶属于 StackOverflow