情况如下:
function STP() { var LOC = window.location.href;
var CSV = LOC.substring(LOC.indexOf(',')+1);
var ARR = CSV.split(',');
var STR = ARR[ARR.length -1 ];
var POS = window.document.getElementById(STR).offsetTop;
alert( STR ); };
说明:
当两个值相同时,为什么一个工作而另一个工作而不是另一个?我尝试过其他方法,例如使用哈希而不是逗号,并且可以使用.location.hash提取值,但它也不起作用。
答案 0 :(得分:1)
问题是当你做
时LOC.substring(LOC.indexOf(',') + 1);
您将,
后的所有内容放入CSV
变量中。但是逗号和'A01'
之间有一个空格。因此,解释器将其缩减为:
var POS = window.document.getElementById(' A01').offsetTop;
但您的ID为'A01'
,而非' A01'
,因此选择器失败。
function STP() {
var LOC = 'file:///M:/Transfers/Main%20Desktop/Export/USI/2018/Catalog/CAT-Compilations-01a.htm?1525149288810, A01';
var CSV = LOC.substring(LOC.indexOf(',') + 1);
var ARR = CSV.split(',');
var STR = ARR[ARR.length - 1];
console.log(`'${STR}'`);
}
STP();

要解决此问题,您可以将索引增加一个:
LOC.substring(LOC.indexOf(',') + 2);
但最好不要在不需要的时候在URL中添加空格 - 如果可能,请将用户改为'file:///M:/Transfers/Main%20Desktop/Export/USI/2018/Catalog/CAT-Compilations-01a.htm?1525149288810,A01'
。