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

标签 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?

最佳答案

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(),假设您的网址没有查询字符串:

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

更新

使用绝对 URL 或其较大部分时,无需使用 .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>');
}

关于应该根据 url 显示/隐藏文本的 javascript 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26578600/

相关文章:

javascript - 测试 React Redux 注入(inject)的属性

如果单击 div 或单击任何标签,则 JavaScript

javascript - 为什么这个 json 示例将对象解析为数组

javascript - 当我使用 ID 代替 DOCUMENT 或 BODY 定位事件时,使用 jQuery 中的 on() 函数的单击事件不起作用

javascript - Backbone.js错误函数是通过什么方式触发的

MVC 中的 Javascript 函数

javascript - jquery - 在页面完全加载和绑定(bind)点击事件之前阻止特定链接

javascript - 计算多个表中 <tr> 中的 <td>

javascript - 获取同级元素的 name 属性,用它来调整具有同等 ID 的元素的值

javascript - 菜单图标根据 HTML 类/属性更改颜色