0
votes

Comment récupérer des informations à partir d'un élément en Javascript quand onclick est déclenché

Disons que j'ai un lien dans mon DOM (mais tout élément serait accepté), avec un appel à une fonction Javascript:

function myFunction() {
    $(this).click(function() { return false; }); // Cancel normal behavior.
    console.log($(this).attr("href"));
}

, et un Fonction Jquery pour remplacer le clic sur ce lien et récupérer son attribut href (désolé, je travaille dans Jquery, mais n'hésitez pas à répondre en vanilla JS) : p>

<a href="google.com" onclick="myFunction()">

En fait, cela ne fonctionne pas. Habituellement, nous devons pointer sur l ' ID ou la classe d'un élément pour obtenir ses informations; mais si nous ne pouvons pas définir un identifiant ou une classe ou quoi que ce soit et que nous ne traitons que certains liens dans une page, comment récupérer directement leurs informations ?

Le titre de ce sujet est intentionnellement général, car la méthode devrait fonctionner pour n'importe quel élément HTML.


3 Réponses :


1
votes

1 commentaires

Pourquoi utiliser jQuery uniquement pour obtenir l'attribut? Juste this.href fonctionnera très bien.



-1
votes

HTML cliquez

JS

function myFunction(event) {
    event.preventDefault();
    // Do your stuff with event.target which is <a>
}

p>


8 commentaires

Qu'est-ce qui ne fonctionne pas, vous pourriez utiliser event.target.href ?


event.prevendDefault (); ne fonctionne pas: `` `` function myFunction (element) {// $ (element) .click (function () {return false;}); element.preventDefault (); console.log (element.attributes ["href"]); } `` `


Cela n'arrête pas le lien pour ouvrir une page.


Avez-vous passé arg onclick = "myFunction (event)" ?


Vous pouvez essayer stackoverflow.com/questions/7056669/...


@SonjoySamadder Il veut un exemple utilisant un lien et veut servir les deux objectifs. empêcher les actions de clic et l'accès aux attributs. J'ai donné la réponse qui a marqué. Pourriez-vous s'il vous plaît voter la réponse


Erratum: J'utilisais "myFunction (element)" et "element.preventDefault ();". Je ne savais pas que nous devions utiliser des mots clés spécifiques tels que "événement" pour que cela fonctionne. Alors, je retire mon dernier commentaire.


Bon alors d'abord pourquoi pas event.preventDefault () // Faites votre travail window.location.href = event.target.href; // Pour accéder au lien.



1
votes

oui vous avez raison avec le sélecteur id ou css que vous pourriez faire. Mais il existe un autre moyen.

Il suffit de passer this en appelant la fonction et vous pourrez accéder à tous les attributs de l'élément comme ci-dessous:

 function myFunction(element, event) {
    event.preventDefault(); // event object can be passed
    element.style.backgroundColor = "red" // attribute can be accessed
    console.log(element.attributes["data-name"])

}

alors vous pouvez accéder à toutes les informations comme ci-dessous:

<a href="google.com"  style="background-color: yellow" onclick="myFunction(this, event)"> click me !!!! <a>


4 commentaires

Le problème est que je ne peux pas tester votre code étant donné que preventDefault () ne fonctionne pas pour arrêter le lien pour ouvrir une nouvelle page.


vous avez dit pour n'importe quel élément. alors j'ai fait une démo avec l'élément DIV. Cela fonctionne très bien. Voulez-vous avec l'élément de lien seulement ???


Ouais, je ne suis pas censé savoir que soudainement, ma technique pour éviter le lien de redirection échouera, et que tout le code proposé par tout le monde échouera aussi. Je pensais pouvoir poser une question générale, mais il semble que je doive faire un nouveau sujet sur LINKS uniquement, en raison de la quantité de merde que JS m'apporte.


Bien. J'ai mis à jour ma réponse à l'aide de la balise de lien. Veuillez vérifier