Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从字符串中提取的Javascript ID无效_Javascript_Arrays_Reference - Fatal编程技术网

从字符串中提取的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 ); };
解释:

  • 当页面加载时,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'
    ,而不是
    '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位于同一页上。