javascript添加ID实现识别当前页

该例程在英文时较灵活:

  <div id="navigation">
    
<ul>
      
<li><href="index.html">Home</a></li>
      
<li><href="about.html">About</a></li>
      
<li><href="photos.html">Photos</a></li>
      
<li><href="live.html">Live</a></li>
      
<li><href="contact.html">Contact</a></li>
    
</ul>
  
</div>

相应的脚本:

function highlightPage() {
  
if (!document.getElementsByTagName) return false;
  
if (!document.getElementById) return false;
  
if (!document.getElementById("navigation")) return false;
  
var nav = document.getElementById("navigation");
  
var links = nav.getElementsByTagName("a");
  
for (var i=0; i<links.length; i++{
    
var linkurl = links[i].getAttribute("href");
    
var currenturl = window.location.href;
    
if (currenturl.indexOf(linkurl) != -1{
      links[i].className 
= "here";
      
var linktext = links[i].lastChild.nodeValue.toLowerCase();
      document.body.setAttribute(
"id",linktext);
    }

  }

}

window.onload 
= highlightPage;

样式表:

#navigation a.here:link,
#navigation a.here:visited,
#navigation a.here:hover,
#navigation a.here:active 
{
  color
: #eef;
  background-color
: #799;
}

#about #header 
{
  background-image
: url(../images/lineup.gif);
}

#photos #header 
{
  background-image
: url(../images/basshead.gif);
}

#live #header 
{
  background-image
: url(../images/bassist.gif);
}

#contact #header 
{
  background-image
: url(../images/drummer.gif);
}

实际应用中使用中文:

  <div id="navigation">
    
<ul>
      
<li><href="index.html">主页</a></li>
      
<li><href="about.html">关于</a></li>
      
<li><href="photos.html">图片</a></li>
      
<li><href="live.html">演唱会</a></li>
      
<li><href="contact.html">留言</a></li>
    
</ul>
  
</div>

 

这就使得添加BODY元素ID的操作失效:
      var linktext = links[i].lastChild.nodeValue.toLowerCase();
      document.body.setAttribute(
"id",linktext);
于是尝试改用提取a元素的href属性值:
 var linktext = split(links[i].getAttribute("href").toLowerCase(),".")[0]; 
 document.body.setAttribute(
"id",linktext); 

此方法在FireFox下可以正常的工作,但是放到IE中,发现IE将自动为链接添加完整的路径,因为是在本地测试,所以返回的完整路径将会是非常长的。不知道IE在什么情况下才能不这么“活泼”。

最后只好使用其他方法:

 

      switch(links[i].lastChild.nodeValue){
        
case("关于"):
          
var linktext = "about";
          
break;
        
case("图片"):
          
var linktext = "photos";
          
break;
        
case("演唱会"):
          
var linktext = "live";
          
break;
        
case("留言"):
          
var linktext = "contact";
          
break;
        
default:
          
var linktext = "home";
          
break;
      }

      document.body.setAttribute(
"id",linktext);

但是这样失去了一些灵活性,以后如果修改页面还需要修改脚本。

在微信小程序中,识别当前页ID可以通过多种方式实现,具体取决于你如何定义和管理页面ID。以下是几种常见的方法: ### 方法一:通过页面路径识别 微信小程序在每个页面的 `onLoad` 生命周期函数中会传递一个 `options` 参数,其中包含当前页面的路径和参数。你可以利用这些信息来识别当前页面。 ```javascript Page({ onLoad: function(options) { console.log('当前页面路径:', options.path); console.log('页面参数:', options); } }); ``` ### 方法二:通过页面栈识别 微信小程序提供了 `getCurrentPages()` 方法,可以获取当前页面栈的实例数组。通过这个数组可以获取当前页面的相关信息。 ```javascript Page({ onShow: function() { const pages = getCurrentPages(); const currentPage = pages[pages.length - 1]; console.log('当前页面实例:', currentPage); console.log('当前页面路由:', currentPage.route); } }); ``` ### 方法三:通过自定义数据识别 在每个页面的 `data` 中定义一个唯一的 `pageId`,然后在需要的时候读取这个 `pageId`。 ```javascript Page({ data: { pageId: 'unique-page-id' }, onLoad: function(options) { console.log('当前页ID:', this.data.pageId); } }); ``` ### 方法四:通过路由参数识别 在跳转页面时,通过路由参数传递一个唯一的 `pageId`,然后在目标页面中接收这个参数。 ```javascript // 跳转页面时传递 pageId wx.navigateTo({ url: '/pages/target/target?pageId=unique-page-id' }); // 目标页面接收 pageId Page({ onLoad: function(options) { console.log('当前页ID:', options.pageId); } }); ``` 以上方法可以根据具体需求选择使用,或者结合使用以达到更好的效果。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值