这是我的代码:
function insert(){
var loc_array = document.location.href.split('/');
var linkElement = document.getElementById("waBackButton");
var linkElementLink = document.getElementById("waBackButtonlnk");
linkElement.innerHTML=loc_array[loc_array.length-2];
linkElementLink.href = loc_array[loc_array.length];
}
我希望linkElementLink.href获取除数组中最后一项之外的所有内容。现在它被打破了,它之前的项目得到倒数第二个项目。
答案 0 :(得分:42)
我不太确定你要做什么。但您可以使用slice
对数组进行切片:
loc_array = loc_array.slice(0, -1);
答案 1 :(得分:35)
优先于pathname
使用href
来仅检索链接的路径部分。否则,如果后缀为?query
或#fragment
,或路径为/
(无父级),则会产生意外结果。
linkElementLink.href= location.pathname.split('/').slice(0, -1).join('/');
(但是,你当然可以说:)
linkElementLink.href= '.';
不要这样做:
linkElement.innerHTML=loc_array[loc_array.length-2];
从任意字符串设置HTML是危险的。如果您从中获取此文本的URL包含HTML中特殊的字符,例如<
和&
,则用户可以注入标记。如果你可以在URL中获得<script>
(你不应该这样,因为它无效,但是某些浏览器可能会让你失望)你会有跨站点脚本安全漏洞。
要设置元素的文本而不是HTML,请使用document.createTextNode('string')
并将其附加到元素或分支代码以使用innerText
(IE)或textContent
(其他现代浏览器。)
答案 2 :(得分:18)
如果使用 lodash ,可以使用http://docs.opencv.org/2.4/modules/core/doc/basic_structures.html#mat-create:
_ .initial(array):获取数组的最后一个元素。
_.initial([1, 2, 3]);
// → [1, 2]
答案 3 :(得分:1)
根据您是否要重复使用数组,您只需使用pop()
方法一次删除最后一个元素。
答案 4 :(得分:0)
linkElementLink.href = loc_array[loc_array.length];
在数组中添加一个新的空槽,因为数组从0运行到array.length-1;所以你返回一个空槽。
linkElement.innerHTML=loc_array[loc_array.length-2];
如果使用括号,则只获取一个索引的内容。我不确定这是不是你想要的?下一节将介绍如何获得多个索引。
要获得.href所需的内容,您需要对数组进行切片。
linkElementLink.href = loc_array.slice(0,loc_array.length-1);
或使用负数来计算结尾
linkElementLink.href = loc_array.slice(0,-1);
这是更快的方式。
另请注意,当从数组直接获取内容时,您将获得与.toString()
方法相同的内容,即item1,item2,item3。如果您不想使用逗号,则需要使用.join()
。像array.join('-')
一样会返回item1-item2-item3。以下是所有数组方法http://www.w3schools.com/jsref/jsref_obj_array.asp的列表。这是一个很好的资源。