我有这个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属性和类“链接”的链接?
这不是一个有效的代码,只是我把它放在一起更好地解释它。 的getElementsByTagName( 'A')。类( '链接')。HREF = “* 233253”
更新: 不幸的是,它必须是纯粹的javascript,而不是使用库,它必须在IE6上工作。
UPDATE2: 我无法访问html
答案 0 :(得分:4)
[编辑]:代码有些草率,现在应该可以使用了。包括拆分方法(见注释)。
循环遍历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';
}
}
答案 1 :(得分:4)
使用jQuery:
$("a.link[href$='233253']").hide();
$ =属性选择器匹配所选属性以给定值结束的所有元素。
答案 2 :(得分:3)
<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] + "$");
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>
编辑:我在阅读了关于在功能中封装功能的评论后发布了新版本。这个应该和以前的版本一样好。
答案 3 :(得分:1)
没有冒犯,但创建循环对我来说似乎是一种解决方法。如果您可以在链接中添加唯一ID,这显然是首选方法。
之后你可以使用'getElementById'来设置一个不同的类来隐藏特定的链接。
答案 4 :(得分:-1)
一条链接与另一条链接的区别是什么?如果您知道在服务器端然后添加适当的类名,那么将以静态方式从CSS中隐藏它们。
动态确定需要隐藏的内容需要您动态生成javascript片段,除非您在HTML中进行渲染。
更新:如果您无法访问生成的HTML,那么我的帖子对您没有帮助。