11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour à Tous,

je souhaite modifier la valeur d'un href lorsque l'url a une valeur précise.

Grosso modo, il s'agit d'un semainier qui bug,
quand on arrive à la dernière semaine de l'année, et que l'on clique sur suivant,
il ne renvoie pas à la première semaine de l'année suivante, mais à la première semaine de l'année en cours.
Pour être plus précis,
si on est sur la page 2014-W52 du semainier, le lien "suivant" contient un href d'une valeur de 2014-W1 au lieu de 2015-W1.

voici la structure du html :

<div class="date-next">
	<span class="next"> <a rel="nofollow" title="Navigate to next week" href="LIEN A REMPLACER" >suivant</a></span>
</div>


voici la structure de mon javascript pour récupérer l'année dans l'url visitée et ajouter 1 :

var URL=document.location.pathname;
// je récupère l'année dans l'url
var courantContenuDansURL = URL.substring(10,14);
// je le convertis en nombre
var conversionNombre = parseFloat(courantContenuDansURL)   
// j'ajoute 1 
var anneePlus1 = conversionNombre+1;


Voici ma condition :

// je récupère la valeur de la semaine
var semaine = URL.substring(16,18);
// si on se trouve à la dernière semaine de l'année, le lien devient année+1-semaine1
if (semaine == 52) {   location.href=anneePlus1+'-W1';	}


Ce sur quoi je bloque : je n'arrive pas à cibler le href déposé dans la structure ci-dessus,
je n'ai pas encore testé ma condition, mais à priori, ce n'est pas ça qui me posera le plus de souci.

Auriez-vous une piste à me suggérer ?

Merci
Si tu utilises JQuery tu dois pouvoir remplacer ton lien avec :

$('tonselecteur').attr('href','url');

Si tu utilises Javascript seul :

document.links["tonselecteur"].href = 'url';

Tu peux attribuer un id sur ton lien de façon à le sélectionner plus facilement si ce n'est pas déjà le cas. Ou alors utiliser ".next a" en sélecteur.
Modifié par Klesk (23 Oct 2012 - 15:32)
Merci pour vos éléments,
mais je n'ai pas réussi à les faire fonctionner avec des CLASSES.

Du coup je suis repartis de mon ancien script qui fonctionne avec un ID,
mais ça me pousse à modifier le template du module, ce qui n'est pas à préconiser si je souhaite le mettre à jour (je suis sous drupal).

Voici mon code :


<div class="date-next">
	<span class="next" > 
		<a id="lienSuivant" rel="nofollow" title="" href="" >suivant</a>
	</span>
</div><br/>

<script>
var URL=document.location.pathname;
// je récupère l'année dans l'url
var courantContenuDansURL = URL.substring(10,14);
// je le convertis en nombre
var conversionNombre = parseFloat(courantContenuDansURL)   
// j'ajoute 1 
var anneePlus1 = conversionNombre+1;
// je récupère la valeur de la semaine
var semaine = URL.substring(16,18);
// je cible l'id 
var lien = document.getElementById('lienSuivant');
// je récupère son lien
var href = lien.href;
// si on se trouve à la dernière semaine de l'année, le lien devient année+1-semaine1
if (semaine == 52) {   
lien.href = anneePlus1+'-W1';
}
</script>


Je suis toujours preneur pour une solution qui me permettrait de cibler l'élément <a href=""> contenu dans le <span class="next" ></span>

Merci encore
Et avec quelque chose de ce type ?

var lien = document.getElementsByClassName("next").firstChild;
Re-bonjour,
j'ai finalement trouvé la solution,
pour ceux que ça intéresse, la voici :


<div class="date-next">
	<span class="next" > 
		<a rel="nofollow" title="" href="" >suivant</a>
	</span>
</div>
<br/>

<a href="#" onclick="alert(anneePlus1);">anneePlus1</a><br/>
<a href="#" onclick="alert(semaine);">semaine</a><br/>
<a href="#" onclick="alert(courantContenuDansURL);">courantContenuDansURL</a><br/>
<a href="#" onclick="alert(href);">href</a><br/>
<a href="#" onclick="alert(user);">user</a><br/>
<a href="#" onclick="alert(lien);">lien</a><br/>

<!-- script à déposer sous le lien que l'on souhaite modifier -->
<script type="text/javascript">
var URL=document.location.pathname;
// je récupère l'année dans l'url
var courantContenuDansURL = URL.substring(17,21);
// je le convertis en nombre
var conversionNombre = parseFloat(courantContenuDansURL);   
// j'ajoute 1 
var anneePlus1 = conversionNombre+1;
		
// je récupère la valeur de la semaine
var semaine = URL.substring(23,25);

// je récupère l'identifiant de l'utilisateur
var user = URL.substring(26,29);
// je cible la balise <a>
var lien = document.querySelector('.date-next a');
// je récupère le lien
var href = lien.href;

// si on se trouve à la dernière semaine de l'année, le lien devient année+1-W1
if (semaine == 52) {   
var href = lien.href = '../'+anneePlus1+'-W1/'+user;
}
</script>


Merci encore Klesk de m'avoir aidé.