JavaScript-obtenir tout sauf le dernier élément dans le tableau
C'est mon code:
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];
}
Je veux linkElementLink.href pour saisir tout sauf le dernier élément du tableau. Maintenant il est cassé, et l'élément avant, il est l'avant-dernier élément.
5 réponses
Utilisez pathname
de préférence à href
pour récupérer uniquement la partie chemin du lien. Sinon, vous obtiendrez des résultats inattendus s'il y a un suffixe ?query
ou #fragment
, ou si le chemin est /
(Pas de parent).
linkElementLink.href= location.pathname.split('/').slice(0, -1).join('/');
( Mais alors, vous pourriez sûrement dire:)
linkElementLink.href= '.';
Ne faites pas ceci:
linkElement.innerHTML=loc_array[loc_array.length-2];
Définir HTML à partir d'une chaîne arbitraire est dangereux. Si l'URL à partir de laquelle vous avez pris ce texte contient des caractères spéciaux en HTML, comme <
et &
, les utilisateurs peuvent injecter du balisage. Si vous pourrait obtenir <script>
dans L'URL (ce que vous ne devriez pas être capable de faire car il est invalide, mais certains navigateurs pourraient vous laisser de toute façon)vous auriez des trous de sécurité Cross-site-scripting.
Pour définir le texte d'un élément, au lieu de HTML, utilisez document.createTextNode('string')
et ajoutez-le à l'élément, ou du code de branche à utiliser innerText
(IE) ou textContent
(autres navigateurs modernes).
Je ne suis pas tout à fait sûr de ce que vous essayez de faire. Mais vous pouvez utiliser slice
pour découper le tableau:
loc_array = loc_array.slice(0, -1);
Si vous utilisez lodash on pourrait employer _.initial(array)
:
_.initial (array) : obtient tout sauf le dernier élément du tableau.
Exemple:
_.initial([1, 2, 3]);
// → [1, 2]
Selon que vous allez réutiliser le tableau ou non, vous pouvez simplement utiliser la méthode pop()
une fois pour supprimer le dernier élément.
linkElementLink.href = loc_array[loc_array.length];
ajoute un nouvel emplacement vide dans le tableau car les tableaux s'exécutent de 0 à array.Longueur-1; de sorte que vous retournez un emplacement vide.
linkElement.innerHTML=loc_array[loc_array.length-2];
si vous utilisez les crochets vous êtes seulement le contenu d'un index. Je ne suis pas sûr si c'est ce que vous voulez? La section suivante explique comment obtenir plus d'un index.
Obtenir ce que vous voulez vous avez besoin pour le .href vous devez découper le tableau.
linkElementLink.href = loc_array.slice(0,loc_array.length-1);
ou en utilisant un négatif pour compter à partir de la fin
linkElementLink.href = loc_array.slice(0,-1);
et ce est la façon plus rapide.
Notez également que lorsque vous arrivez à bourrer directement à partir du tableau, vous obtiendrez la même chose que la méthode .toString()
, qui est item1, item2, item3. Si vous ne voulez pas les virgules, vous devez utiliser .join()
. Comme array.join('-')
retournerait item1-item2-item3. Voici une liste de toutes les méthodes de tableau http://www.w3schools.com/jsref/jsref_obj_array.asp. C'est une bonne ressource pour ce faire.