【问题标题】:How to change the color of the links with javascript?如何使用javascript更改链接的颜色?
【发布时间】:2011-07-05 02:54:01
【问题描述】:

我想知道如何使用 javascript 操作页面上的所有链接。我可以通过document.getElementById(id) 的id 获取元素,但我怎样才能获取链接?还有我怎样才能获得具有某个classname 的所有元素?我想改变链接和类元素的颜色。

我的意思是这些链接:

<a href="http://www.google.com">This is a link</a>

还有一个带有类的元素示例:

<span class="link">This is an element with a class</span>

请不要使用 jquery。我想要 javascript。

【问题讨论】:

  • (jQuery is JavaScript -- 在任何情况下,同样适用 -- 设置元素的样式/类/或-其他-选择器并使用 CSS。实际上, CSS 不需要 JavaScript... 没有简单的方法可以获取具有给定类的所有元素,但是您可以获取具有给定“标签名称”(提示)的所有元素——这是标准 DOM 方法——然后用适当的条件迭代它们。如果你不想使用 jQuery,我会查看“标准”DOM 函数的 W3C DOM 规范,然后 quirksmode 找出它们真正 工作。)
  • 查看我的答案的更新。我提供了一个链接来演示您正在尝试做的事情。

标签: javascript colors hyperlink


【解决方案1】:

这就是我更改所有超链接颜色的方式(正常/悬停):

function changeTextHyperlinkColours(inputColorNormal, inputColorHover) { 

    var sheets = document.styleSheets;
    var slen = sheets.length; 

    for(var i=0; i<slen; i++) { 

        var rules = document.styleSheets[i].cssRules; 
        var rlen = rules.length; 

        for(var j=0; j<rlen; j++) { 

            if (rules[j].selectorText == 'a') {
                rules[j].style['color'] = inputColorNormal;
            } 

            if (rules[j].selectorText == 'a:hover') {
                rules[j].style['color'] = inputColorHover;}
            }
        } 
    }
}

【讨论】:

    【解决方案2】:

    您还可以在 span 中嵌入链接文本并更改颜色

    <a href='www.mydomain.com'><span onclick='this.style.color="red"'>Visit Us</span></a>
    

    【讨论】:

      【解决方案3】:

      纯 JavaScript 版本并没有那么复杂:

      var elements = document.getElementsByTagName('a');
      
      for (var i = 0; i < elements.length; i++) {
          if (elements.className.split(/\s+/).indexOf('red') !== -1) {
              elements[i].style.color = 'red';
          }
      }
      

      对于现代浏览器:

      var elements = document.querySelectorAll('a.red');
      
      [].slice.call(elements).forEach(function(elem) {
          elem.style.color = 'red';
      });
      

      【讨论】:

      • 正是这个,改变颜色。但是你能写纯javascript版本吗?我怎样才能用js获得a's?
      • 循环出错,应该是:for (var i = 0; i
      • 顺便说一句,这并没有找到所有的链接。链接是具有“href”属性的元素。
      • 我修复了循环问题,并添加了一个类选择器。 @Matt,将href 属性添加到&lt;a&gt; 之外的元素是否有效(X)HTML?
      【解决方案4】:

      您可以使用document.getElementsByTagName("a")。此函数返回页面中&lt;a&gt; 元素的数组。循环这个数组,并在每个元素中使用.style.color = "#000000"

      【讨论】:

        【解决方案5】:

        简单明了(在纯 JS 中也是如此!)

        colorLinks("#00FF00");
        
        function colorLinks(hex)
        {
            var links = document.getElementsByTagName("a");
            for(var i=0;i<links.length;i++)
            {
                if(links[i].href)
                {
                    links[i].style.color = hex;  
                }
            }  
        }
        

        如果它是您要查找的类名并且您知道标签,请使用它。

        var elements = document.getElementsByTagName("span");
        for(var j=0;j<elements.length;j++)
        {
            if(elements[j].className === "your class here")
            {
                //do something
            }  
        }
        

        您还可以查看getElementsByClassNamequerySelectorAll。两者都支持大多数新浏览器。

        【讨论】:

        • 我为您添加了一个关于课程的简单示例。
        • 我只想获取具有类名的元素,例如:
          hello
          可以吗?
        • 在这种情况下,您可以在我的 sn-p 中将“span”替换为“div”,然后将您要查找的类替换为“im_looking_for_all_elements_with_this_class_name”。
        • if (links[i].href)... 是不需要的。将href= 属性用于&lt;a&gt; 以外的元素是违反标准的。
        • 哦,我是这样做的: var elements = document.getElementsByClassName("link"); for(var j=0;j
        【解决方案6】:

        更新:我仍然推荐使用 jQuery,但是,如果您想了解如何在没有 jQuery 的情况下使用,我建议您访问这个网站。这显示了当您将鼠标悬停在链接上时如何更改链接颜色,但您可以轻松推断您的具体情况:Javascript Change Link Text Color onmouseover

        --

        Ottomanlast 有一个很好的观点,那就是查看 jQuery 来帮助您完成这项任务(尽管它可以在不使用库的情况下完成)。然而,为了让你有一个他所说的例子,这里是你如何使用 jQuery 更改链接颜色。

        $('.linkClass').click(function(){
              $(this).css('color', 'green');
        });
        

        此示例在单击特定链接时更改其颜色。

        $('a').css('color', 'green');
        

        此示例会将所有链接更改为绿色。

        $('.linkClass').click(function(){
              $(this).removeClass('oldClass');
              $(this).addClass('newClass');
        });
        

        这与第一个示例的作用相同,但它删除并添加了您已经在其他地方定义的 CSS 类。 (我会推荐这种方法而不是直接编辑 CSS。)

        无论如何,我要说明的一点是,jQuery 使选择和更改 HTML 文档中的对象变得非常容易。你可能想看看它。

        【讨论】:

        • 我知道jQuery,但我想知道纯js是如何工作的,它并不比jquery复杂得多,那为什么不学习纯js呢?无论如何,谢谢,将来会阅读此问题的人可能会发现此答案很有帮助。
        • @Maxxon - 没问题。抱歉,它没有回答您的确切问题。然而,做“纯 JavaScript”(jQuery is JavaScript)可能比仅使用 jQuery 困难得多。不是从语言的角度来看,而是从开发时间、兼容性等角度来看。这就是为什么许多开发人员甚至不考虑在没有 jQuery(或类似库)的情况下使用 JavaScript 的原因。查看 Addy Osman(和其他人)关于 jQuery 与 Vanilla JS 的这篇很棒的帖子 - addyosmani.com/blog/javascriptuncovered
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-07
        • 2013-11-11
        • 1970-01-01
        相关资源
        最近更新 更多