Le titre a été modifié, mais uniquement dans le code généré. C'est ainsi que fonctionne JS - il ne s'attaque qu'à la présentation. Essayez d'utiliser la barre d'outils Webdeveloper pour Firefox, car il a la possibilité d'afficher le code généré avec celui d'origine. Si vous avez besoin d'une autre solution, pensez à utiliser une programmation côté serveur.
Mes observations:
Ne jamais mélanger JS avec HTML. Si vous avez besoin de mettre à jour votre code, ce sera beaucoup plus facile - cherchez "JS discret" pour mieux comprendre le problème. <a href="javascript:...">
ou <a href="#" onclick="...">
est donc une mauvaise pratique de codage. N'utilisez pas de grands packages JS comme JQuery pour des tâches simples. Ils ne sont bons que s'ils sont utilisés avec leur plein potentiel.
Avez-vous vraiment besoin d'effectuer une manipulation HTML à la volée et pourquoi? L'info-bulle du titre est-elle importante pour votre code? Qui devrait en bénéficier: utilisateurs finaux ou administrateur? Et l'accessibilité?
INFO sur le premier bloc de code:
- Si nous ne savons pas ce lien à utiliser, nous devons recueillir tous les
- puis testez la collection contre l'événement onclick
- Suggestions:
-
- une meilleure utilisation du gestionnaire d'événement;)
-
- liens ne portent que sur de partie particulière de la page (principale ou la navigation div) pour améliorer la vitesse
- CAVEATS:
- cela peut la page ralentir le rendu attribut title
- est hardcoded et même pour tous les liens
function changeTitle1(){
// find the array of links inside the document
var a = document.getElementsByTagName('a');
// test the array against onclick event
for (var i = 0, j = a.length; i
- INFO sur le second bloc de code:
- Nous savons exactement ce lien pour vérifier
- Suggestion:
-
- utiliser un meilleur gestionnaire d'événements;)
- CAVEATS:
- cela ne peut être utilisé sur un seul élément
- titre l'attribut est codé en dur et identique pour tous les liens
function changeTitle2(){
// find the link
var a = document.getElementById('action_link');
// onclick event
a.onclick = function() {
try{
// change title value
this.title = 'This unique click happened as well!';
// or use setAttribute() method like this
/* this.setAttribute('title', 'This unique click happened as well!'); */
// disable default link action
return false;
}
// clear memory leaks with try-finally block
finally{a = null;}
}
}
window.onload = function() {
changeTitle1();
//changeTitle2();
}
@spiro: En ce qui concerne votre deuxième question sur les liens de l'état actuel et l'évolution de leur CSS ... eh bien, l'utilisation CSS :)
Version courte:
<style type="text/css" media="screen">
#home #current-home a,
#contact #current-contact a,
#about #current-about a
{/* declarations to style the current state */}
</style>
</head>
<body id="home"> <!-- OR body id="contact" OR body id="about" -->
<a href="#" title="Home" class="current-home">Home</a>
<a href="#" title="Contact" class="current-contact">Contact</a>
<a href="#" title="About us" class="current-about">About us</a>
Version longue: http://www.456bereastreet.com/archive/200503/setting_the_current_menu_state_with_css/ (lire également les commentaires)
Remarque: est-il nécessaire d'afficher le lien si vous êtes déjà sur la page en cours?
Il n'utilise pas jQuery, il utilise une manipulation directe de DOM. Pourquoi est-ce que quelqu'un devine? –
J'ai utilisé votre code mais l'erreur de lancement "Objet attendu". Qu'est-ce que je devrais faire maintenant? –
Pourquoi compliquer les choses en ajoutant jquery dans le mix? C'est dhtml trivial. –