Premiers scirpts Premiers problémes

cs_jpabm Messages postés 1 Date d'inscription mardi 30 octobre 2007 Statut Membre Dernière intervention 20 novembre 2010 - 20 nov. 2010 à 15:15
ChasseurDeChimeres Messages postés 292 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 15 janvier 2013 - 21 nov. 2010 à 00:31
Bonjour à tous.
Je me lance dans le Javascript et je viens de créer un premier Scipt, qui me permettra de faire apparaitre des photos ou des vidéos dans une div (appelé Div droite)en cliquant sur un lien texte dans une liste d'une autre div (appelé div gauche).
J'ai pris un script existant et je l'ai modifié. Seulement les photos apparaissent bien à droite, mais reste en page et se mette les unes à la suite des autres au fur et à mesure que je clic sur les liens.
Quelqu'un pourrait-il m'aidez et me dire là ou j'ai fait une erreur ou un oubli ?
Merci d'avance

Mon script

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">;
<html xmlns="http://www.w3.org/1999/xhtml">;
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>essai</title>
</head>

<style type="text/css">
.div{width:200px;height:40px;background:lightblue;}

</style>

<script type="text/javascript">
function div_droite(action){
if(action=='afficher'){
document.getElementById('div_gauche').style.visibility = 'visible';
}
}
function div_droite2(action){
if(action=='afficher'){
document.getElementById('div_gauche2').style.visibility = 'visible';
}
}
function div_droite3(action){
if(action=='afficher'){
document.getElementById('div_gauche3').style.visibility = 'visible';
}
}
function div_droite4(action){
if(action=='afficher'){
document.getElementById('div_gauche4').style.visibility = 'visible';
}
}
</script>



Le port




St Florent




Ile Rousse




Calvi































</html>


________________
Jeepee qui vous remercie ....

3 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
20 nov. 2010 à 16:17
Salut,

Premier sujet et première erreur serait-je tenté de te répondre

Tu t'es trompé de forum : ici c'est le forum java et non javascript : ces 2 langages n'ont pas grand chose en commun si ce n'est leur nom, ce qui induit pas mal de monde en erreur.

Je déplace vers le forum de javascript.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
20 nov. 2010 à 23:09
Bonjour,
Je me lance dans le Javascript
il est donc nécessaire de ne pas commencer par l'erreur de dupliquer les fonctions qui font la même chose.
Quand on regarde ces deux fonctions
function div_droite3(action) {
  if (action == 'afficher') {
    document.getElementById('div_gauche3').style.visibility = 'visible';
  }
}
function div_droite4(action) {
  if (action == 'afficher') {
    document.getElementById('div_gauche4').style.visibility = 'visible';
  }
}
on note, pour commencer qu'une seule chose change l'ID

ensuite tu passes un argument que tu n'exploites pas entirement, que fais tu si action est différent de "afficher" ?

une technique consiste à passer en paramètre l'ID de l'élément à traiter en plus de l'action, ce qui donnerait
//---------------------------------------
function div_droite( id_element, action) {
  if (action == 'afficher') {
    document.getElementById( id_element).style.visibility = 'visible';
  }
  else {
    // Action dans le cas contraire par exemple
  }
}
ce qui va clarifier sérieusement ton script, surtout si tu as 50 élément à traiter.

Tu aurais pu également traiter cela ainsi
//---------------------------------------
function div_droite( id_element, action) {
  //-- recup objet
  var oDiv = document.getElementById( id_element);
  //-- si existe
  if( oDiv){
    //-- affection etat
    oDiv.style.visibility = action;
  }
}
dans ce cas tu fais un appel comme suit

  St Florent

 

Un autre point maintenant concernant les DIVs masquées, il est préférable de mettre le display à none plutôt que la visibility à hidden, c'est un problème d'occupation de l'espace du document, display:none n'affiche pas mais n'occupe pas de place dans le document alors que visibility:hidden n'affiche pas mais laisse la place libre dans le document.

Quelqu'un pourrait-il m'aidez et me dire là ou j'ai fait une erreur ou un oubli ?
Il te faut penser à cacher les autres avant d'en afficher une suivante.
;O)
0
ChasseurDeChimeres Messages postés 292 Date d'inscription mercredi 7 novembre 2007 Statut Membre Dernière intervention 15 janvier 2013 3
21 nov. 2010 à 00:31
Salut;
Il est normal quelles se mettent à la suite, pour quelles se superposent il te faudrait leur donner une position "relative" identiques à chacune en css.
Une solution plus efficace serait de modifier non pas la propriété "visibility" mais la propriété "display" que tu pourras définir en "none" (l'élément n'est pas là") ou "block" (l'élément est un bloc).
La solution la plus propre est de modifier le contenu de ta div grâce à sa propriété "innerHTML" :

<script type="text/javascript">
 function setImg(id_img) {
  document.getElementById('div_gauche').innerHTML = "";
 }
</script>

 
Le port

 

 
St Florent 


div onclick="setImg('3');" class="div"> 
Île Rousse



 
Calvi 



En espérant que ça t'aide.
0
Rejoignez-nous