javascript - 从字符串中提取的 Javascript ID 不起作用
问题描述
情况如下:
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 ); };
解释:
- 当页面加载时,onload 调用脚本。
- 该脚本通过创建一个数组并引用最后一个数组来获取 location.href 并提取元素 ID。
- 到目前为止,一切都很好。
- 然后我使用它来引用元素 ID 以获取其位置。
- 但它不起作用。
- 当 STR 警报放置在 POS 上方而不是下方时,它会指示正确的值。当使用 STR var 引用时,该脚本在该点以下根本不起作用。
- 但是,如果我直接引用 ID ('A01') 没问题。
当两个值相同时,为什么一个有效而另一个无效?我尝试了其他方法,例如使用哈希而不是逗号,并且可以使用 .location.hash 提取值,但它也不起作用。
解决方案
问题是当你这样做时
LOC.substring(LOC.indexOf(',') + 1);
你把后面的所有东西都,
放入CSV
变量中。但逗号和 . 之间有一个空格'A01'
。因此,解释器将其简化为:
var POS = window.document.getElementById(' A01').offsetTop;
但是您的 ID 是'A01'
, not ' 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'
。
推荐阅读
- angular - Angular 6+中的条件字段验证取决于选择字段的值
- python - 如何在 Snakemake 表格配置中使用列表,用于描述生物信息学管道的测序单元
- php - Setasign SetaPDF SetaPDF_Core_Text_Block / canvas->text() 将文本倒置显示
- php - 如果执行数据超过一定范围查询不被执行
- jenkins - yopMail 在 Jenkins 上运行时要求验证码
- sql - SQL:使用 INFORMATION_SCHEMA.TABLES 时如何指定数据库名称和服务器名称?
- php - 如何在codeigniter中检查复选框值?
- jquery - jquery的提交方法没有提交输入类型提交表单数据
- webhooks - 如何验证 webhook 来自 basecamp
- javascript - 如何获取视口高度,包括开发工具