更改borderBottom在顶部位置地址的颜色



我正在为我的网站制作一个非常基本的菜单,我使用了border-bottom属性来给项目加下划线。如果你在某一页上,我想要的是突出显示下划线粉红色。我使用了自定义的"url"元素和"link"属性。我希望这样,如果用户在第1页,第1页的项目将以粉红色下划线。以下是我迄今为止所尝试的:

<script>
function col(){if(top.location.href==document.getElementsByTagName("url")[1].link){this.style.borderBottom="solid #F05";};}
</script>

^这完全是错误的,我用W3Schools的一些代码进行了测试。我也试过:

<script>
function menuCol(url){if(top.location == url){this.style.borderBottom="solid #F05";};}
</script>

^这个有效,但我必须在每个页面上都包含"[PAGE NO]",这样脚本才能匹配页面和URL元素的ID。

有人知道我如何在不需要添加pageID标签的情况下真正做到这一点吗?

-----编辑-----对不起,我不确定如何用语言表达这个问题,但这是页面和源代码(目前):

http://3659905.webs.com/ExternalPages/Desktop/Menubar_test.htm

<head>
<title>Menu</title>
<noframes></noframes><noscript></noscript><!-- --><script type="text/javascript" src="http://www.freewebs.com/p.js"></script><script></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script language="JavaScript" src="http://images.freewebs.com/JS/Freebar/bar_sidegrey.js"></script>
<script>
$(document).ready(function(){
$("url").click(function(){
top.location.href="http://"+$(this).attr("link")
});
});
</script>
<script>
function col(){if(top.location.href==document.getElementsByTagName("url")[1].link){this.style.borderBottom="solid #F05";};}
</script>
<style>
url{text-decoration:none;font-size:15px;padding:3px;border-bottom:solid #AAA;}
url:hover{cursor:pointer;border-bottom:solid #FFF}
body{background:black;color:white;font-family:arial;cursor:default;}
</style>
</head>

<body onselectstart="return false;" oncontextmenu="return false;" onload="col();">
<center>
<url link="3s.uk.to">Home</url>
<url link="3apps.uk.to">App Store</url>
<url link="3659905.webs.com/ExternalPages/Desktop/Menubar_test.htm">Menu Test</url>
</center>
</body>

考虑到问题中信息的稀疏性,我能做出的最好猜测是:

// in real life, use:
// var url = window.location;
var url = "http://some.domain.com/index.html";
function markActive(elem) {
    if (url.indexOf(elem.href.split('/').pop()) > -1) {
        return 'active'
    }
}
var as = document.getElementsByTagName('a');
for (var i=0,len=as.length; i<len; i++){
    as[i].className = markActive(as[i]);
}​

JS Fiddle演示。

在其当前版本中,这只适用于页面的名称,因此,如果您有多个index.html页面,尽管位于不同的目录中,它们都会分配活动类(如果您当前位于www.example.com/index.html中)。

正如他们所说,我们需要更多的代码。

但如果你想使用当前的"页面名称"并获得包含该页面的链接,你可以这样做:

//get current adress
var URL = window.location.pathname;
//get the filename with extension
var PageName = URL.substring(URL.lastIndexOf('/') + 1); 
//use jquery to find links pointing to the file
$('#YOURMENU a[href='+PageName+']').css("border-bottom-color", "#F05");

最新更新