我要完成的事情很简单。我希望按钮的文本根据您所在的页面而改变。
我通过使用以下内容开始:
var loc_array = document.location.href.split('/');
现在我有了url并将其拆分为一个数组,我可以根据位置获取某些目录,如下所示:
if (loc_array[loc_array.length-1] == 'stations'){
var newT = document.createTextNode("Stations & Maps");
}
现在,如果目录为/ test / stations /,则可以使用,但是如果有人输入/test/stations/index.html,则它将无法使用。如何在不抛出其他if语句或不使用类似条件的情况下对此进行测试。
最佳答案
实际上,两个示例的工作原理相同。 /stations/
和/stations/index.html
都分成两个字符串; /stations/
在结尾处有一个空字符串。因此length-2
会起作用。 /stations
无效,这是一个更高的级别。但这通常不是问题,因为如果stations
是静态目录,Web服务器将使用斜杠将浏览器重定向到/stations/
。
如果您自己进行路由,那将不会发生。如果要进行路由,从路径部分列表的末尾开始索引不是一个好主意,例如,可能有任何旧的垃圾作为路径参数传递。 /stations/region1/stationname2
。在这种情况下,您应该从头开始索引。
如果可以将应用程序安装在除根目录之外的其他路径上,则需要告诉JavaScript该根目录的路径,以便可以确定要跳过多少个斜杠。您可能还需要将其告知其他目的,例如,如果它动态创建了任何图像,则需要知道根目录才能确定要从中获取图像的目录。
var BASE= '/path-to/mysite';
var BASELEVEL= BASE.split('/').length;
...
var pagename= location.pathname.split('/')[BASELEVEL];
// '/path-to/mysite/stations/something' -> 'stations'
我正在使用
location.pathname
仅提取URL的路径部分,而不是尝试使用字符串或正则表达式方法将href
分开,这对于其中带有/
的查询字符串和片段标识符将失败。(有关URL的其他部分,另请参见
protocol
,host
,port
,search
,hash
。)关于javascript - Javascript和拆分数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3232182/