从字符串中提取的Javascript ID无效
情况如下:从字符串中提取的Javascript ID无效,javascript,arrays,reference,Javascript,Arrays,Reference,情况如下: 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
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的值,但它也不起作用。问题是,当您这样做时
LOC.substring(LOC.indexOf(',') + 1);
您正在将,
之后的所有内容放入CSV
变量中。但是逗号和'A01'
之间有一个空格。因此,解释器将其简化为:
var POS = window.document.getElementById(' A01').offsetTop;
但是您的ID是'A01'
,而不是'A01'
,因此选择器失败
函数STP(){
var LOC='1file:///M:/Transfers/Main%20Desktop/Export/USI/2018/Catalog/CAT-编译-01a.htm?1525149288810,A01';
var CSV=位置子字符串(位置索引(',')+1);
var ARR=CSV.split(',');
var STR=ARR[ARR.length-1];
log(`${STR}`);
}
STP()代码>如果共享分配给LOC
的值的示例,则可能更容易理解问题所在。您可能希望使用F12调试器逐步完成代码。似乎window.document.getElementById(STR)
应该失败,但您是说它可以与A01
一起工作。我怀疑文本周围可能有空格,但如果没有,很难知道。如果STR返回的值正确,其他地方可能有哪些相关数据?但你看,整根血淋淋的绳子。A01被干净地删除,没有空格:file:///M:/Transfers/Main%20Desktop/Export/USI/2018/Catalog/CAT-Compilations-01a.htm?1525149288810,A01是的,这都是本地文件之间的内容。其他一切都很好,所以我所有的设置都正确。除此之外,ID与加载的ID位于同一页上。