html组件置灰 失效,使HTML超链接失效变灰色的JavaScript

在Web开发中,经常会遇到这样的需求。根据用户的不同操作来决定超级链接是否可用。很多人一遇到这种问题,就靠百度帮忙。而实际上,网上的代码大多是残章片段,如果自己不熟悉其中的原理。光靠粘贴拷贝是没有任何帮助的。下面的代码是我在项目中用到的,在此贴出来和大家分享。

一、寻找HTML超链接

要想让超链接失效变灰色,首先要做的事情是找到超链接。寻找超链接的方法有很多,如果采用W3C的方法,就是如下写法:

document.getElementsByTagName("a")

如果觉得W3C的方法太长了或者不美观,可以使用一些JavaScript库,例如jQuery或者Mootools。这样获取超链接就非常简洁。

您也可以使用在标签上加上ID的方式,但是有个小缺点。如果您是针对全篇的超链接,这种加ID的方式就增大了工作量。

二、改变HTML超链接

找到超链接之后,接下来要做的事情就是改变超链接,使其失效并且变成灰色。让超链接失效的方式有好几种,最常见的就是把href属性设为“#”。实际上这种方式根本就没有改变超链接,只是使得href属性没有指向一个合理的链接而已。

真正改变超链接的方式是让其变为普通文本,而且文本的字体颜色是灰色的。如同以下效果:

95447ad6523c48233e804dadfb522b66.png

好了,闲话就不扯了,让我们进入正题。下面的代码是HTML文档一加载完毕就立刻执行函数。

var addLoadEvent=function(func) {

var oldonload = window.onload;

if (typeof window.onload != 'function') {

window.onload = func;

} else {

window.onload = function() {

if (oldonload) {

oldonload();

}

func();

}

}

};         这个函数是为了后面加载查找超链接的函数。下面是获取HTML文档中超链接,并且使其失效变灰色。

var getLinks=function() {

if(!document.getElementsByTagName)return false;

if(!document.createElement)return false;

if(!document.getElementsByName("a"))return false;

var links = document.getElementsByTagName("a");

for (var i = 0; i < links.length; i++) {

//判断href属性是否包含“#”符号

if ((links[i].getAttribute("href").indexOf("#")) >= 0) {

var para = document.createElement("p");

var fon = document.createElement("font");

fon.setAttribute("color", "#808080");

fon.innerHTML =links[i].lastChild.nodeValue;

var content = para.appendChild(fon);

replaceEach(links[i], content);

} else {

links[i].style.color = "990033";

}

}

};         通过阅读以上代码,相信读者已经明白了。改变超链接的方式实际上是用

替换了标签。并且在

标签中内嵌了标签,的颜色设为了灰色,就达到了我们想要的效果。

其中用到了替换函数replaceEach,下面给出replaceEach函数的代码。

//替换HTML元素

var replaceEach=function(targetNode, newNode) {

var targetParentNode = targetNode.parentNode;

var newParentNode = newNode.parentNode;

//若 targetParentNode 和 newParentNode 都存在父节点

if (targetParentNode && newParentNode) {

targetParentNode.replaceChild(newNode.cloneNode(true), targetNode);

} else {

newParentNode.replaceChild(targetNode, newNode);

}

};

最后别忘记了最重要的一步,在addLoadEvent函数中加载查找函数,如下:

addLoadEvent(getLinks);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值