Hyperlink 更改嵌入在表中的选定链接的颜色

Hyperlink 更改嵌入在表中的选定链接的颜色,hyperlink,scripting,html-table,Hyperlink,Scripting,Html Table,我正在尝试使用类名在选择链接后更改其颜色,这样它将保持新的颜色,但仅在选择另一个链接之前,然后它将更改回原来的颜色 我使用的代码是Martin Kool发布的: <html> <head> <script> document.onclick = function(evt) { var el = window.event? event.srcElement : evt.target; if (el && el.cla

我正在尝试使用类名在选择链接后更改其颜色,这样它将保持新的颜色,但仅在选择另一个链接之前,然后它将更改回原来的颜色

我使用的代码是Martin Kool发布的:

<html>     
<head>
<script>
  document.onclick = function(evt) {
    var el = window.event? event.srcElement : evt.target;
    if (el && el.className == "unselected") {
      el.className = "selected";
      var siblings = el.parentNode.childNodes;
      for (var i = 0, l = siblings.length; i < l; i++) {
        var sib = siblings[i];
        if (sib != el && sib.className == "selected")
          sib.className = "unselected";
      }
    }
  }
</script>
<style>
  .selected { background: #f00; }
</style>
</head>
 <body>
   <a href="#" class="selected">One</a> 
    <a href="#" class="unselected">Two</a> 
    <a href="#" class="unselected">Three</a>
  </body>
你给我的这段代码在视觉上效果很好,完全符合我的要求。然而,它使我的链接停止工作。。。它们会改变颜色,但不会链接到任何东西,然后当我删除脚本时,它们工作正常。我做错了什么/我必须改变什么才能使这项工作成功


另外,我想在我的网站的其他地方做同样的事情,在那里链接都在一个
标签中,由
标签分隔。我怎样才能做到这一点?

是有错误还是什么都没有发生?如果您是javascript初学者,最好的第一步是使用Firebug之类的工具,以便查看详细的错误消息,并且可以添加console.log语句以查看在运行代码时发生的情况。

是否有错误或只是什么都没有发生?如果您是javascript初学者,最好的第一步是使用Firebug之类的工具,这样您可以看到详细的错误消息,并且可以添加console.log语句来查看运行代码时发生的情况。

所谓“表中”是指将每个链接放在自己的单元格中吗?因为这将使这条线:

var siblings = el.parentNode.childNodes;

无法选择单元格外的其他链接。您必须找到另一种方法来表示哪个元素是链接容器。

所谓“表中”是指将每个链接放在自己的单元格中吗?因为这将使这条线:

var siblings = el.parentNode.childNodes;

无法选择单元格外的其他链接。您必须找到另一种方法来表示哪个元素是链接容器。

您正在通过同级循环。如果链接位于单独的
中,则它们不再是兄弟

您可以像这样循环浏览所有链接:

document.onclick = function(evt)
{
    var el = window.event? event.srcElement : evt.target;
    if (el && el.className == 'unselected')
    {
        var links = document.getElementsByTagName('a');
        for (var i = links.length - 1; i >= 0; i--)
        {
            if (links[i].className == 'selected')
                links[i].className = 'unselected';
        }
        el.className = 'selected';
    }

    return false;
}

我还添加了一个
返回false在函数末尾,阻止您转到“#”

您正在兄弟姐妹之间循环。如果链接位于单独的
中,则它们不再是兄弟

您可以像这样循环浏览所有链接:

document.onclick = function(evt)
{
    var el = window.event? event.srcElement : evt.target;
    if (el && el.className == 'unselected')
    {
        var links = document.getElementsByTagName('a');
        for (var i = links.length - 1; i >= 0; i--)
        {
            if (links[i].className == 'selected')
                links[i].className = 'unselected';
        }
        el.className = 'selected';
    }

    return false;
}

我还添加了一个
返回false在函数末尾,要阻止您转到“#”,请将代码与表格一起发布。请将代码与表格一起发布。