J'ai un tableau avec l'alphabet, chaque lettre a une URL attachée avec elle. J'ai aussi une liste de boutons, chacun correspondant à une lettre de l'alphabet.
Je souhaite récupérer la valeur de la matrice (URL) en fonction de laquelle l'utilisateur clique sur lequel l'utilisateur clique sur lequel l'utilisateur peut cliquer sur plusieurs boutons. P >
Donc, si l'utilisateur clique sur le bouton "C", je veux obtenir pour récupérer l'URL associée à la lettre "C" à partir du tableau " p>
J'ai pu boucler le Je n'ai vraiment aucune solution en vue. P> html p> javascript p> #letsters code> Les enfants de l'élément et obtenez le ID code> de chaque bouton. J'ai pensé à le comparer contre la matrice en quelque sorte mais je me suis perdue en cours de route. P>
3 Réponses :
Voici un extrait que je reçois tous les liens et joindre un événement de clic à ce moment-là, ce qui enregistre simplement la valeur que la clé correspond à l'ID de bouton cliqué
p>
<div class="col-md-12" id="letters"> <a href="#" class="btn btn-primary" id="A">A</a> <a href="#" class="btn btn-primary" id="B">B</a> <a href="#" class="btn btn-primary" id="C">C</a> </div>
Utilisez Data- * attribut et ajouter Écouteur d'événements sur vos lettres, en cliquant sur Obtenez l'élément cliqué et obtenez la lettre à l'aide de p> .data () code>. <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="col-md-12" id="letters">
<a href="#" data-letter="A" class="btn btn-primary" id="A">A</a>
<a href="#" data-letter="B" class="btn btn-primary" id="B">B</a>
<a href="#" data-letter="C" class="btn btn-primary" id="C">C</a>
</div>
<img width="300" id="demo" src="" />
Il est inutile de rédiger des liens dans HTML si vous envisagez d'avoir plus à l'avenir. Sauvez-vous un peu de temps et de les générer de manière dynamique. Fourni ci-dessous est une fonction réutilisable p> listlnx () code> qui générera code> dans html à partir d'une liste donnée de presque une quantité illimitée d'URL. Les détails complets sont commentés dans la démo. // An Array of Arrays each sub-array has a key/value pair
let urls = [
['A', 'https://example.com/'],
['B', 'https://stackoverflow.com'],
['D', 'https://stackoverflow.com/users/2813224/zer00ne'],
['C', 'https://css-tricks.com'],
];
/*** listLnx()
1st Param: [Array] (see above)
2nd Param: [String] (optional--default: "body") the tag in which the links
will be nested within
*/
/*
*A - Reference the parent tag
*B - Instantiate Map Object from the array. Array is
reversed because the links are prepended to parent
*C - Iterate through map with a for...of loop. The
entries() method returns an array of key/value pairs
which is destructured for easy access
*D - An <a> is created with .createElement() method. The
remaining statements assemble each link with the
following:
1. an #id
2. a [href]
3. text of #id and hostname
4. block level style
5. then prepended to parent tag
*/
const listLnx = (array, selector = `body`) => {
let node = document.querySelector(selector); //A
let map = new Map(array.reverse()); //B
for (const [key, url] of map.entries()) { //C
const a = document.createElement('a'); //D
a.id = key; //1
a.href = url; //2
a.textContent = `${key} - ${a.hostname}`; //3
a.style.display = 'block'; //4
node.prepend(a); //5
}
}
listLnx(urls);