本应根据url显示/隐藏文本的javascript不起作用

javascript that is supposed to show/hide text according to url is not working

本文关键字:文本 javascript 不起作用 隐藏 应根据 url 显示      更新时间:2023-09-26

这段代码应该根据页面的url显示/隐藏文本,但它不起作用:

    var pages = window.location.href;    
if(pages == "page1.html"){
    //display page 1 text
}
else if(pages == "page2.html"){
    //display page 2 text
}

http://jsfiddle.net/yp8h2moe/1/

我在本地测试了它,但没有成功,所以我用jsfiddle进行了测试,但不幸的是,每次保存jsfiddler时,都会得到一个新的url。

更新

这是更新后的代码,我可以指定文件扩展名来运行它,但我只需要使用url来运行它:

<script>
var pages = window.location.href;    
if( pages.split('/').pop() === 'http://akecheta.com/free-blogger-templates/' ) {
    document.write('<b>Hello World 1</b>');
}
else if( pages.split('/').pop() === 'http://akecheta.com/free-blogger-templates/' ) {
    document.write('<b>Hello World 2</b>');
}
</script>

解决方案如何以正确的方式在Javascript中插入HTML文本?

href的值通常是一个绝对URL,因此必须按如下方式使用.indexOf()

var pages = window.location.href;    
if(pages.indexOf("page1.html") > -1){
    //display page 1 text
}
else if(pages.indexOf("page2.html") > -1 ){
    //display page 2 text
}

或者,您可以使用.split().pop(),假设您的URL没有查询字符串:

if( pages.split('/').pop() === 'page1.html' ) {
//...

更新

当使用绝对URL或其较大部分时,不需要使用.split().pop()。请记住,split创建一个数组,而pop获得该数组的最后一个元素。对于绝对URL,您将不需要此过程。

var pages = window.location.href;    
if( pages.indexOf( 'http://akecheta.com/free-blogger-templates/' ) > -1 ) {
    document.write('<b>Hello World 1</b>');
}
else if( pages.indexOf( 'http://akecheta.com/free-blogger-templates/xx' ) > -1 ) {
    document.write('<b>Hello World 2</b>');
}

它不起作用,因为在您的jsfiddle中var pages"http://fiddle.jshell.net/_display/ "

请尝试console.log,并确保在需要时也对其进行修剪。。对于page1.html等,您必须将其与完整/绝对路径进行比较

如果您的URLhttp://wwww.example.com/page1.html,则需要URL路径。所以,代码看起来像下面

var pages = location.pathname;    
if(pages == "/page1.html"){
  //display page 1 text
}
else if(pages == "/page2.html"){
   //display page 2 text
}