应该根据url显示/隐藏文本的javascript无法正常工作

时间:2014-10-26 22:14:38

标签: javascript jquery

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

    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测试,但不幸的是每次你保存一个jsfiddle,你得到一个新的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>

解决方案 How can I insert HTML text in Javascript the right way?

3 个答案:

答案 0 :(得分:2)

href的值通常是绝对网址,因此您必须使用.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(),假设您的网址没有查询字符串:

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

<强>更新

使用绝对网址或更大部分内容时,您无需使用.split().pop()。请记住split创建一个数组,而pop获取该数组的最后一个元素。使用绝对网址时,您不需要此过程。

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>');
}

答案 1 :(得分:0)

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

尝试console.log并确保在需要时修剪它。 对于page1.html等你的情况..你必须将它与完整/绝对路径进行比较

答案 2 :(得分:0)

如果您的网址为http://wwww.example.com/page1.html,那么您需要网址路径。所以,代码看起来像下面的

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