특정 클래스 및 속성이 있는 링크 숨기기
-
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 속성과 "링크" 클래스가 있는 링크를 숨기려면 href 속성과 마지막 숫자(233253)를 사용하여 이러한 링크 중 하나를 숨기려면 어떻게 해야 합니까?
이것은 작동하는 코드가 아니며 단지 더 잘 설명하기 위해 조합한 것입니다.getElementsByTagName('a').class('link').href="*233253"
업데이트:불행히도 라이브러리를 사용하지 않고 순수 자바스크립트여야 하며 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] + "$");
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';
}
}
또는
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에서 정적으로 숨겨 질 것입니다.
HTML 내부에 렌더링하지 않는 한 숨기기가 필요한 것을 동적으로 결정하면 자바 스크립트 스 니펫을 동적으로 생성해야합니다.
업데이트: 생성 된 HTML에 액세스 할 수 없다면 내 게시물은 도움이되지 않습니다.