Besoin d'aide pour un projet en javascript
Résolu/Fermé
Shxdely
-
24 mars 2018 à 16:04
jordane45 Messages postés 38300 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 novembre 2024 - 31 janv. 2019 à 08:37
jordane45 Messages postés 38300 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 novembre 2024 - 31 janv. 2019 à 08:37
A voir également:
- Besoin d'aide pour un projet en javascript
- Telecharger javascript - Télécharger - Langages
- Musique projet x ✓ - Forum Musique / Radio / Clip
- Exemple d'un projet déjà monté - Forum Programmation
- Filigrane projet - Guide
- A javascript error occurred in the main process - Forum Matériel & Système
7 réponses
jordane45
Messages postés
38300
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2024
4 704
24 mars 2018 à 17:10
24 mars 2018 à 17:10
Bonjour,
Tu n'as pas commencé grand chose .....
Inspire toi de ça :
Tu n'as pas commencé grand chose .....
Inspire toi de ça :
<!DOCTYPE html> <html lang="fr" <head> <meta charset="utf-8"> <title>EXO</title> </head> <body> <div class="form-inline"> <input type="text" id="formule"> <input type="button" value="calculer" onclick="start();"> <div style='margin-top:10px;margin-left:5px;height:25px;width:250px;background-color:#fbef7b;'> <label>Résultat</label> <span id="resultat"></span> </div> </div> <script type="text/javascript"> var element = { 'H':1 ,'HE':4 ,'Li':7 }; function start(){ var formule=document.getElementById('formule').value; console.log('Formule : ' + formule); //je fais un exemple avec une seule valeur... //si tu entres plusieurs "valeurs" dans ton champ formule.. faudra boucler sur chaque valeur.. (je te laisserai chercher ce point !) var result = getElementValue(formule); console.log(result); //affichage du réltat document.getElementById('resultat').innerHTML = result; } function getElementValue(valToCheck){ if(typeof(valToCheck)!='undefined' && valToCheck!=null){ if(element.hasOwnProperty(valToCheck)){ return element[valToCheck]; }else{ return 0; } } } </script> </body> </html>
Petit update :
Si quelqu'un pouvait m'aider pour intégrer les nombre stœchiométrique ?
var atoms = { H: 1.00794, He: 4.002602, Li: 6.941, Be: 9.012182, B: 10.811, C: 12.011, O: 15.9994, F: 18.9984032, Ne: 20.1797, Na: 22.989770, Mg: 24.3050, Al: 26.981539, Si: 28.0855, P: 30.973762, S: 32.066, Cl: 35.4527, Ar: 39.948, K: 39.0983, Ca: 40.078, Sc: 44.95591, Ti: 47.88, V: 50.9415, Cr: 51.9961, Mn: 54.93805, Fe: 55.847, Co: 58.9332, Ni: 58.69, Cu: 63.546, Zn: 65.39, Rb: 85.4678 }; document.getElementById('calculate').addEventListener('click', () => { let formula = document.getElementById('formula').value; document.getElementById('resultat').innerHTML = ""; if (formula) { formula = formula.split(' '); // La formule doit avoir des espaces entres chaque types let totalMass = 0; // On commence par une masse de zéro for (let atom in atoms) for (let i = 0; i < formula.length; i++) if (formula[i] == atom) totalMass += atoms[atom]; // On additionne les masses atomiques de la formule document.getElementById('resultat').innerHTML = totalMass; } else console.error('La formule est vide!'); });
Si quelqu'un pouvait m'aider pour intégrer les nombre stœchiométrique ?
jordane45
Messages postés
38300
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2024
4 704
25 mars 2018 à 22:46
25 mars 2018 à 22:46
Pourquoi boucler sur atom alors ue je t'ai donné une fonction (getElementValue) ?
C'est sur fotmula que tu dois faire ta boucle...
C'est sur fotmula que tu dois faire ta boucle...
jordane45
Messages postés
38300
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2024
4 704
25 mars 2018 à 23:06
25 mars 2018 à 23:06
Bref :
var atoms = { H: 1.00794, He: 4.002602, Li: 6.941, Be: 9.012182, B: 10.811, C: 12.011, O: 15.9994, F: 18.9984032, Ne: 20.1797, Na: 22.989770, Mg: 24.3050, Al: 26.981539, Si: 28.0855, P: 30.973762, S: 32.066, Cl: 35.4527, Ar: 39.948, K: 39.0983, Ca: 40.078, Sc: 44.95591, Ti: 47.88, V: 50.9415, Cr: 51.9961, Mn: 54.93805, Fe: 55.847, Co: 58.9332, Ni: 58.69, Cu: 63.546, Zn: 65.39, Rb: 85.4678 }; document.getElementById('calculate').addEventListener('click', () => { var totalMass = 0; // On commence par une masse de zéro document.getElementById('resultat').innerHTML = ""; var formula = document.getElementById('formula').value; console.log('formula :'+formula); if (typeof(formula)!='undefined' && formula!=null){ var splitformula = formula.split(' '); // La formule doit avoir des espaces entres chaque types for (var i=0 ; i< splitformula.length;i++){ //on boucle sur la formule var F = splitformula[i]; console.log('F : '+F); var Mass = parseFloat(getElementValue(F)); //on va chercher la valeur correspondante console.log('Mass : '+Mass); totalMass += Mass; // On additionne les masses atomiques de la formule } console.log(totalMass); document.getElementById('resultat').innerHTML = totalMass; } else { console.error('La formule est vide!'); } }); function getElementValue(valToCheck){ if(typeof(valToCheck)!='undefined' && valToCheck!=null){ if(atoms.hasOwnProperty(valToCheck)){ return atoms[valToCheck]; }else{ return 0; } } }
jordane45
Messages postés
38300
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2024
4 704
25 mars 2018 à 23:48
25 mars 2018 à 23:48
J'ai testé et ca marche parfaitement...
As tu regarde dans la console si tu n'aurais pas d'erreur ?
As tu regarde dans la console si tu n'aurais pas d'erreur ?
jordane45
Messages postés
38300
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2024
4 704
25 mars 2018 à 23:53
25 mars 2018 à 23:53
Heu... D'où vient ce 2 et ce :c. ??
As tu essayé
As tu essayé
H He
dans un premier temps je voulais faire une version simple :/ mais quand j'y repense tu a raison
jordane45
Messages postés
38300
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2024
4 704
25 mars 2018 à 23:44
25 mars 2018 à 23:44
Ce n'est pas assez simple le code que je viens de te donner ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ca fonctionnais sans aussi enfaite je voulais juste y intégrer le nombre stœchiométrique :
Si quelqu'un pouvait m'aider pour intégrer les nombre stœchiométrique ?
jordane45
Messages postés
38300
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2024
4 704
26 mars 2018 à 00:03
26 mars 2018 à 00:03
Mes cours de chimie remontent très loin.... Tu pourrais expliquer ce que c'est sensé faire non ??
Sachant qu'il suffira, à mon avis, de vérifier, dans la boucle, si il s'agit d'un texte ou d'un nombre...et faire le traitement adéquat en fonction....
Sachant qu'il suffira, à mon avis, de vérifier, dans la boucle, si il s'agit d'un texte ou d'un nombre...et faire le traitement adéquat en fonction....
jordane45
Messages postés
38300
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2024
4 704
>
Shxdely
Modifié le 26 mars 2018 à 00:28
Modifié le 26 mars 2018 à 00:28
Ben.. je t'ai donné la voir à suivre...
Un if et le tour est joué
Un if et le tour est joué
jordane45
Messages postés
38300
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2024
4 704
>
jordane45
Messages postés
38300
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2024
26 mars 2018 à 00:29
26 mars 2018 à 00:29
Je regarderai ça demain
jordane45
Messages postés
38300
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2024
4 704
26 mars 2018 à 19:14
26 mars 2018 à 19:14
Essaye ça :
<!doctype html> <html lang="fr"> <head> <meta charset="utf-8" /> <title>Atomtom&nana</title> <link rel="stylesheet" href="style.css" type="text/css" media="screen" /> <style> #resultat{ font-size: 16px; text-align:center: padding:10px; width:180px; background-color:#b0eaac; } </style> </head> <body> <input type="text" id="formula" value="H He"> <input type="button" id="calculate" value="go"> <div id="resultat"></div> <script type="text/javascript"> var atoms = { H: 1.00794, He: 4.002602, Li: 6.941, Be: 9.012182, B: 10.811, C: 12.011, O: 15.9994, F: 18.9984032, Ne: 20.1797, Na: 22.989770, Mg: 24.3050, Al: 26.981539, Si: 28.0855, P: 30.973762, S: 32.066, Cl: 35.4527, Ar: 39.948, K: 39.0983, Ca: 40.078, Sc: 44.95591, Ti: 47.88, V: 50.9415, Cr: 51.9961, Mn: 54.93805, Fe: 55.847, Co: 58.9332, Ni: 58.69, Cu: 63.546, Zn: 65.39, Rb: 85.4678 }; document.getElementById('calculate').addEventListener('click', () => { var previousVal = null; var previousValType = null; var totalMass = 0; // On commence par une masse de zéro document.getElementById('resultat').innerHTML = ""; var formula = document.getElementById('formula').value; console.log('formula :'+formula); if (typeof(formula)!='undefined' && formula!=null){ var splitformula = formula.split(' '); // La formule doit avoir des espaces entres chaque types splitformula.reverse(); //on inverse l'ordre de l'array pour faciliter le calcul. for (var i=0 ; i< splitformula.length;i++){ //on boucle sur la formule var F = splitformula[i]; console.log( i + "==>> F : "+F); var Mass = parseFloat(getElementValue(F)); //on va chercher la valeur correspondante if(Mass !=null && typeof(Mass)!='undefined' && !isNaN(Mass)){ //console.log('Mass : '+Mass); //console.log('previousVal : ' + previousVal); if(previousValType != "stoechio"){ totalMass += Mass; // On additionne les masses atomiques de la formule previousValType = null; previousVal = 0; }else{ totalMass += parseFloat(previousVal * Mass); previousValType = null; previousVal = 0; } }else if(Number.isInteger(parseInt(F))){ //si par contre c'est un nombre... console.log("F est un nombre : " + F); previousVal = parseInt(F); previousValType = "stoechio"; }else{ previousValType = null; previousVal = 0; console.log("Valeur inconnue ("+F+") : Ce n'et ni un nombre, ni une valeur du tableau connue.."); } } document.getElementById('resultat').innerHTML = totalMass; } else { alert('La formule est vide!'); } }); function getElementValue(valToCheck){ if(typeof(valToCheck)!='undefined' && valToCheck!=null){ if(atoms.hasOwnProperty(valToCheck)){ return atoms[valToCheck]; }else{ return null; } } } </script> </body> </html>
jordane45
Messages postés
38300
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2024
4 704
26 mars 2018 à 19:23
26 mars 2018 à 19:23
Tu penseras à mettre le sujet en résolu.
Merci.
Merci.
jordane45
Messages postés
38300
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2024
4 704
26 mars 2018 à 19:23
26 mars 2018 à 19:23
Tu noteras que j'ai mis des commentaires et pas mal de console.log histoire que tu comprennes ce que j'ai fait.
Shxdely
>
jordane45
Messages postés
38300
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2024
Modifié le 26 mars 2018 à 21:31
Modifié le 26 mars 2018 à 21:31
Désolé de te déranger encore et encore, je me suis permis de modifier le code un tout petit peu, voici le bout que j'ai ajouté :
J'ai fait ça pour simplifier la saisie de l'utilisateur mais maintenant le script ne prend plus en compte les nombre à plusieurs chiffre :/ sais tu qu'elle partie du code qui est à modifier ?
var formule = document.getElementById('formula').value; var formula = '' formule.split('').forEach(function(l) { formula = formula + ' ' + l; }); formula = formula.substr(1);
J'ai fait ça pour simplifier la saisie de l'utilisateur mais maintenant le script ne prend plus en compte les nombre à plusieurs chiffre :/ sais tu qu'elle partie du code qui est à modifier ?
Bonjour je sais pas trop comment ouvrir un autre poste sur ce site alors je vais mettre ma question ici.
Bon voilà j'ai réussi avoir un script pour un jeux de tarot mais je suis pas capable de changer les image des cartes mais juste du début et je demande ou faire et changer la description des cartes sur ce code ou faut que je face un code un autre page en php ou css ce que je suis pas trop bon la dedans.
Voici le code :
<!doctype html>
<html lang="fr">
<head>
<title>Le tirage gratuit de don&voyance : trois cartes</title>
<meta name="description" content="Le tirage gratuit de don&voyance trois cartes, une interprétation personnalisée des 22 lames majeures, profitez des conseils divinatoires du tarot de marseille pour réaliser vos projets"/>
<script src="//code.jquery.com/jquery-latest.min.js"></script>
<script src="cartes.php"></script>
<script>
var changePage;
var fold;
var unfold;
var animateRotate;
$(function() {
/*----------------------------------
----------- PAGE CHANGE ------------
------------------------------------*/
$("*[data-page]").hide();
$("*[data-current-page='true']").show();
changePage = function(content, pageNum) {
$("."+content+"[data-current-page='true']").hide();
$("."+content+"[data-page='"+pageNum+"']").show().attr("data-current-page", "true");
}
/*----------------------------------
--------- ROTATION ANIMATE ---------
------------------------------------*/
animateRotate = function(el, time, it, from, to) {
var span = parseFloat(to) - parseFloat(from);
var step = 25/time;
var newValue = from + (span * $.easing.easeInCubic(step * parseInt(it), it*25, 0, 1, time));
$(el).css("-o-transform", "rotate("+newValue+"deg)");
$(el).css("-moz-transform", "rotate("+newValue+"deg)");
$(el).css("-webkit-transform", "rotate("+newValue+"deg)");
$(el).css("-ms-transform", "rotate("+newValue+"deg)");
if(it*25 < time)
setTimeout("animateRotate('"+el+"', "+time+", "+(parseInt(it)+1)+", "+from+", "+to+")", 25);
}
/*----------------------------------
------------- FOLDING --------------
------------------------------------*/
//additionnal easing effect
$.easing.easeInCubic = function (x, t, b, c, d) {
return c*(t/=d)*t*t + b;
};
//for redian to degree conversion
var rad2deg = 57.2957795;
var cardLimit = 22;
var mid = (cardLimit-1)/2
//current selected card, and their position
var current = 0;
var pos = [ [-105, 110] , [0, 110] , [105, 110] , [0, 95, 120, 213]];
var choseCard = [];
//number of created card
fold = function() {
var i = 0;
var moving = false;
function chooseCard(card, last) {
//if we're at the last card, do nothing
if((current == pos.length-1 || moving) && !last)
return;
//just in case it's the last card automatically showed
carte = $(this);
if($(card).hasClass("carte"))
carte = $(card);
if(carte.attr("data-selected") == "true")
return;
//prevent two cards to be fold at the same time
moving = true;
//calculate positions and get widths for later
var cardWidth = 80;//carte.width();
var cardHeight = 142;//carte.height();
var pHeight = carte.parent().height();
var curPos = pos[current++];
var curLeft = curPos[0] - cardWidth/2;
var curTop = pHeight - curPos[1] - cardHeight;
var finPos = pos[pos.length-1];
var finLeft = finPos[0] - finPos[2]/2;
var finTop = pHeight - finPos[1] - 3*cardHeight/2;
//keeps the good ol' card
var oldImage = $("img", carte);
//prevents a card from appearing two or more times
var okay = false;
while(!okay) {
card = Math.floor(Math.random()*cardsImage.length);
okay = true;
for(var k = 0; k < choseCard.length; k++)
if(choseCard[k] == card)
okay = false;
}
choseCard.push(card);
//creates and adds the card to the DOM
var newCard = $("<img />").attr("src", "cartes/"+cardsImage[card]);
carte.prepend(newCard);
//custom rotation because jquery sucks
animateRotate("*[data-number="+carte.attr("data-number")+"]", 300, 0, carte.attr("data-angle"), 0);
//scales the card. We have to scale both image and div because Chrome doesn't support inherit correctly
$("img", carte).animate({
width: finPos[2],
height: finPos[3]
}, "slow");
carte.attr('data-selected', true).css({ zIndex: current }).animate({
left: [finLeft, "easeInCubic"],
bottom: finTop,
width: finPos[2],
height: finPos[3]
}, "slow", null, function() {
carte.addClass("cardSel"+current);
if(!last) {
//shows card and resize it after some time
oldImage.fadeOut('');
eval("setTimeout(function() { $('.cardSel"+current+" img').animate({ width: '80px', height: '142px' }, 'fast'); $('.cardSel"+current+"').animate({ left: "+curLeft+"+'px', bottom: "+curTop+"+'px', width: '80px', height: '142px' }, 'fast', null, function() { if(current < pos.length - 1) moving = false; }); }, 650);");
}
else {
//if it's the last, redesigns the interface...
moveInterface();
}
//if it's the last, chooses a random card
if(current >= pos.length - 1 && !last) {
setTimeout(function() {
moveInterface();
}, 850);
}
});
}
function moveInterface() {
$(".carte[data-selected='true']").fadeOut("slow");
//retrieves the last image
var lastImage = choseCard[0];
$("#confirmLast").fadeIn().empty().css({
font: "13px verdana",
overflow: "auto"
}).html(cardsDescr[lastImage]);
//adds the big image
choseCard.push(lastImage);
var bigImage = $("<img />").attr("id", "bigImage").attr("src", "cartes/"+cardsImage[lastImage]).css({
position: "absolute",
left: "-218px",
top: "80px",
width: "140px",
height: "245px"
});
$("#container").append(bigImage);
$("#moreDatas").fadeIn().append("<h2>"+cardsTitle[lastImage]+"</h2>").append("<p>"+cardsSigni[lastImage]+"</p>");
//adds a start again button
var button = $("<div />").addClass("button").html("Refaire un tirage").click(function() {
window.location.reload();
}).css({
left: "-63px"
});
$("#container").append(button);
var button2;
var button2_1;
var button3;
var button4;
//adds a the switch view button
var button2 = $("<div />").addClass("button").html("Voir les cartes").click(function() {
$("#bigImage, #moreDatas, #confirmLast").fadeOut();
$(".carte[data-selected='true']").fadeIn();
button2_1.fadeIn();
button2.fadeOut();
button3.fadeOut();
button4.fadeOut();
}).css({
position: "absolute",
left: "53px"
});
$("#container").append(button2);
button2_1 = $("<div />").addClass("button").html("Voir les résultats").click(function() {
$("#bigImage, #moreDatas, #confirmLast").fadeIn();
$(".carte[data-selected='true']").fadeOut();
button2_1.fadeOut();
button2.fadeIn();
button3.fadeIn();
button4.fadeIn();
}).css({
position: "absolute",
left: "53px"
}).hide();
$("#container").append(button2_1);
//adds a previous card button
var curCard = 0;
button3 = $("<div />").addClass("button").html("Carte précédente").click(function() {
curCard--;
if(curCard < 0) curCard = choseCard.length-2;
image = choseCard[curCard];
$("#bigImage").attr("src", "cartes/"+cardsImage[image]);
$("#moreDatas h2").html(cardsTitle[image]);
$("#moreDatas p").html(cardsSigni[image]);
$("#confirmLast").html(cardsDescr[image]);
}).css({
left: "-178px"
});
$("#container").append(button3);
//adds a next card button
button4 = $("<div />").addClass("button").html("Carte suivante").click(function() {
curCard++;
if(curCard >= choseCard.length-1) curCard = 0;
image = choseCard[curCard];
$("#bigImage").attr("src", "cartes/"+cardsImage[image]);
$("#moreDatas h2").html(cardsTitle[image]);
$("#moreDatas p").html(cardsSigni[image]);
$("#confirmLast").html(cardsDescr[image]);
}).css({
left: "170px"
});
$("#container").append(button4);
//hides unused cards
$(".carte[data-selected!='true'], .refold").fadeOut("slow");
}
function foldSub() {
//defines top and left position of the new card
var a = (i-mid)/rad2deg - Math.PI/2;
var left = Math.cos(a)*20000/cardLimit;
var bottom = Math.sin(i/(cardLimit-1)*Math.PI)*55 + Math.abs((i-mid));
//randomizes position a bit, to looks more natural
diffL = Math.random()*6-3;
diffT = Math.random()*6-3;
//checks if the card already exists
if(!$(".carte[data-number="+i+"]").length) {
//creates the card's div and gives it its class
var carte = $("<div></div>").attr("data-number", i).addClass("carte");
var img = $("<img />").attr("src", "carte.jpg");
carte.append(img);
//adds the card to the DOM
$("#container").append(carte);
//we want rotation from -10 to +10 before randomizing
var a = (i-mid)
//rotates the card (maybe not working on IE8-)
var angle = (i-mid)*Math.abs(i-mid)/3 + (Math.random()*10-5);
carte.css("-o-transform", "rotate("+angle+"deg)");
carte.css("-moz-transform", "rotate("+angle+"deg)");
carte.css("-webkit-transform", "rotate("+angle+"deg)");
carte.css("-ms-transform", "rotate("+angle+"deg)");
carte.attr("data-angle", angle);
//over effect ...
carte.mouseover(function() {
if($(this).attr("data-selected"))
return;
l = (parseInt($(this).attr("data-number"))-mid) * 2;
t = cardHeight/3 + parseInt($(this).attr("data-number"))-mid;
$(this).animate({
left: "+="+l,
bottom: "+="+t
}, "fast");
});
//...and the out !
carte.mouseout(function() {
if($(this).attr("data-selected"))
return;
l = (parseInt($(this).attr("data-number"))-mid) * 2;
t = cardHeight/3 + parseInt($(this).attr("data-number"))-mid;
$(this).animate({
left: "-="+l,
bottom: "-="+t
}, "fast");
});
//moves the card to the current position
carte.click(chooseCard);
}
else {
//just selects it
carte = $(".carte[data-number="+i+"]");
while(carte.attr("data-selected") == "true")
carte = $(".carte[data-number="+(++i)+"]");
}
//sets card's position, and animates it
var cardWidth = $(carte).width();
var cardHeight = $(carte).height();
carte.css({
bottom: "-200px"
}).animate({
left: (left + diffL - cardWidth/2)+"px",
bottom: (bottom + diffT)+"px"
}, "fast");
//creates a new card if needed
i++;
if(i < cardLimit)
setTimeout(function() { foldSub() }, 50);
}
foldSub();
}
unfold = function(callback) {
var i = 0;
function unfoldSub(callback) {
while($(".carte[data-number="+i+"]").attr("data-selected") == "true") {
i++;
}
$(".carte[data-number="+i+"]").animate({
left: 0,
bottom: "-200px"
}, "fast");
//hide a new card if needed
i++;
if(i < cardLimit)
setTimeout(function() { unfoldSub(callback) }, 50);
else
callback();
}
unfoldSub(callback);
}
});
</script>
<style>
body {
margin: 0;
padding: 0;
}
.page {
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizinf: border-box;
position: relative;
width: 470px;
height: 460px;
overflow: hidden;
margin: 0 auto;
padding: 0 20px;
font: 13px Arial;
color: #000;
background: url("fond2.jpg");
}
.default {
background: url("fond.jpg");
}
.button {
width: 100px;
text-align: center;
display: block;
padding: 4px 2px;
border-radius: 4px;
background: rgba(255, 255, 255, 0.90);
color: #000;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
cursor: pointer;
position: absolute;
bottom: 15px;
left: 50%;
margin-left: -50px;
}
.description {
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizinf: border-box;
position: absolute;
top: 120px;
left: 50%;
background: rgba(255, 255, 255, 0.90);
width: 410px;
margin-left: -205px;
padding: 10px;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.90);
border-radius: 8px;
}
#confirmLast {
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizinf: border-box;
display: none;
cursor: pointer;
position: absolute;
left: -75px;
bottom: 135px;
z-index: 10;
background: rgba(255, 255, 255, 0.90);
padding: 10px;
width: 290px;
height: 100px;
font-size: 13px;
font-family: Verdana;
text-align: justify;
color: #000;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
border-radius: 8px;
}
#confirmLast.finishBloc {
font: 14px verdana;
overflow: auto;
}
#moreDatas {
overflow: auto;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizinf: border-box;
display: none;
cursor: pointer;
position: absolute;
left: -75px;
top: 80px;
z-index: 10;
background: rgba(255, 255, 255, 0.90);
border-radius: 8px;
padding: 10px;
width: 290px;
height: 100px;
font-size: 13px;
font-family: Verdana;
text-align: center;
}
#moreDatas h2 {
margin: 5px 0 10px 0;
font-size: 24px;
font-family: Verdana;
font-style:bold;
text-align: center;
color: #993366;
}
#container {
height: 100%;
position: absolute;
left: 50%;
}
.carte {
position: absolute;
width: 50px;
height: 92px;
border-radius: 4px;
cursor: pointer;
overflow: hidden;
}
.carte img {
position: absolute;
top: 0;
left: 0;
width: 50px;
height: 92px;
cursor: pointer;
}
</style>
<!--[if IE]>
<style>
#confirmLast, .description, .button {
background: rgb(255, 255, 255);
}
#moreDatas * {
color: rgb(255, 255, 255);
}
</style>
<![endif]-->
</head>
<body>
<div class="page default" data-page="1" data-current-page="true">
<a class="button" onclick="changePage('page', 2); fold();">Continuer</a>
</div>
<div class="page" data-page="2" data-current-page="false">
<p class="description">
Prenez le bon chemin et évitez les embuches en faisant, dès maintenant, le tirage du tarot de Marseille. Les 22 lames majeures vous révèleront vos obstacles, vos atouts pour réussir votre désir ainsi que votre état d'esprit du moment. <br/>Le tirage gratuit du tarot de Marseille trois cartes s'est adapté à vos besoins pour vous apporter une interprétation rapide, simple et personnalisée des 22 lames majeures, profitez des conseils divinatoires du tarot de marseille pour réaliser vos projets.
</p>
<a class="button" onclick="changePage('page', 3); fold();">Continuer</a>
</div>
<div class="page" data-page="3" data-current-page="false">
<div id="container">
<div id="confirmLast">Cliquez ici pour afficher la dernière carte</div>
<div class="page2" id="moreDatas"></div>
</div>
<a class="button refold" onclick="unfold(function() { setTimeout('fold()', 300) });">Remélanger</a>
</div>
</body>
</html>
Bon voilà j'ai réussi avoir un script pour un jeux de tarot mais je suis pas capable de changer les image des cartes mais juste du début et je demande ou faire et changer la description des cartes sur ce code ou faut que je face un code un autre page en php ou css ce que je suis pas trop bon la dedans.
Voici le code :
<!doctype html>
<html lang="fr">
<head>
<title>Le tirage gratuit de don&voyance : trois cartes</title>
<meta name="description" content="Le tirage gratuit de don&voyance trois cartes, une interprétation personnalisée des 22 lames majeures, profitez des conseils divinatoires du tarot de marseille pour réaliser vos projets"/>
<script src="//code.jquery.com/jquery-latest.min.js"></script>
<script src="cartes.php"></script>
<script>
var changePage;
var fold;
var unfold;
var animateRotate;
$(function() {
/*----------------------------------
----------- PAGE CHANGE ------------
------------------------------------*/
$("*[data-page]").hide();
$("*[data-current-page='true']").show();
changePage = function(content, pageNum) {
$("."+content+"[data-current-page='true']").hide();
$("."+content+"[data-page='"+pageNum+"']").show().attr("data-current-page", "true");
}
/*----------------------------------
--------- ROTATION ANIMATE ---------
------------------------------------*/
animateRotate = function(el, time, it, from, to) {
var span = parseFloat(to) - parseFloat(from);
var step = 25/time;
var newValue = from + (span * $.easing.easeInCubic(step * parseInt(it), it*25, 0, 1, time));
$(el).css("-o-transform", "rotate("+newValue+"deg)");
$(el).css("-moz-transform", "rotate("+newValue+"deg)");
$(el).css("-webkit-transform", "rotate("+newValue+"deg)");
$(el).css("-ms-transform", "rotate("+newValue+"deg)");
if(it*25 < time)
setTimeout("animateRotate('"+el+"', "+time+", "+(parseInt(it)+1)+", "+from+", "+to+")", 25);
}
/*----------------------------------
------------- FOLDING --------------
------------------------------------*/
//additionnal easing effect
$.easing.easeInCubic = function (x, t, b, c, d) {
return c*(t/=d)*t*t + b;
};
//for redian to degree conversion
var rad2deg = 57.2957795;
var cardLimit = 22;
var mid = (cardLimit-1)/2
//current selected card, and their position
var current = 0;
var pos = [ [-105, 110] , [0, 110] , [105, 110] , [0, 95, 120, 213]];
var choseCard = [];
//number of created card
fold = function() {
var i = 0;
var moving = false;
function chooseCard(card, last) {
//if we're at the last card, do nothing
if((current == pos.length-1 || moving) && !last)
return;
//just in case it's the last card automatically showed
carte = $(this);
if($(card).hasClass("carte"))
carte = $(card);
if(carte.attr("data-selected") == "true")
return;
//prevent two cards to be fold at the same time
moving = true;
//calculate positions and get widths for later
var cardWidth = 80;//carte.width();
var cardHeight = 142;//carte.height();
var pHeight = carte.parent().height();
var curPos = pos[current++];
var curLeft = curPos[0] - cardWidth/2;
var curTop = pHeight - curPos[1] - cardHeight;
var finPos = pos[pos.length-1];
var finLeft = finPos[0] - finPos[2]/2;
var finTop = pHeight - finPos[1] - 3*cardHeight/2;
//keeps the good ol' card
var oldImage = $("img", carte);
//prevents a card from appearing two or more times
var okay = false;
while(!okay) {
card = Math.floor(Math.random()*cardsImage.length);
okay = true;
for(var k = 0; k < choseCard.length; k++)
if(choseCard[k] == card)
okay = false;
}
choseCard.push(card);
//creates and adds the card to the DOM
var newCard = $("<img />").attr("src", "cartes/"+cardsImage[card]);
carte.prepend(newCard);
//custom rotation because jquery sucks
animateRotate("*[data-number="+carte.attr("data-number")+"]", 300, 0, carte.attr("data-angle"), 0);
//scales the card. We have to scale both image and div because Chrome doesn't support inherit correctly
$("img", carte).animate({
width: finPos[2],
height: finPos[3]
}, "slow");
carte.attr('data-selected', true).css({ zIndex: current }).animate({
left: [finLeft, "easeInCubic"],
bottom: finTop,
width: finPos[2],
height: finPos[3]
}, "slow", null, function() {
carte.addClass("cardSel"+current);
if(!last) {
//shows card and resize it after some time
oldImage.fadeOut('');
eval("setTimeout(function() { $('.cardSel"+current+" img').animate({ width: '80px', height: '142px' }, 'fast'); $('.cardSel"+current+"').animate({ left: "+curLeft+"+'px', bottom: "+curTop+"+'px', width: '80px', height: '142px' }, 'fast', null, function() { if(current < pos.length - 1) moving = false; }); }, 650);");
}
else {
//if it's the last, redesigns the interface...
moveInterface();
}
//if it's the last, chooses a random card
if(current >= pos.length - 1 && !last) {
setTimeout(function() {
moveInterface();
}, 850);
}
});
}
function moveInterface() {
$(".carte[data-selected='true']").fadeOut("slow");
//retrieves the last image
var lastImage = choseCard[0];
$("#confirmLast").fadeIn().empty().css({
font: "13px verdana",
overflow: "auto"
}).html(cardsDescr[lastImage]);
//adds the big image
choseCard.push(lastImage);
var bigImage = $("<img />").attr("id", "bigImage").attr("src", "cartes/"+cardsImage[lastImage]).css({
position: "absolute",
left: "-218px",
top: "80px",
width: "140px",
height: "245px"
});
$("#container").append(bigImage);
$("#moreDatas").fadeIn().append("<h2>"+cardsTitle[lastImage]+"</h2>").append("<p>"+cardsSigni[lastImage]+"</p>");
//adds a start again button
var button = $("<div />").addClass("button").html("Refaire un tirage").click(function() {
window.location.reload();
}).css({
left: "-63px"
});
$("#container").append(button);
var button2;
var button2_1;
var button3;
var button4;
//adds a the switch view button
var button2 = $("<div />").addClass("button").html("Voir les cartes").click(function() {
$("#bigImage, #moreDatas, #confirmLast").fadeOut();
$(".carte[data-selected='true']").fadeIn();
button2_1.fadeIn();
button2.fadeOut();
button3.fadeOut();
button4.fadeOut();
}).css({
position: "absolute",
left: "53px"
});
$("#container").append(button2);
button2_1 = $("<div />").addClass("button").html("Voir les résultats").click(function() {
$("#bigImage, #moreDatas, #confirmLast").fadeIn();
$(".carte[data-selected='true']").fadeOut();
button2_1.fadeOut();
button2.fadeIn();
button3.fadeIn();
button4.fadeIn();
}).css({
position: "absolute",
left: "53px"
}).hide();
$("#container").append(button2_1);
//adds a previous card button
var curCard = 0;
button3 = $("<div />").addClass("button").html("Carte précédente").click(function() {
curCard--;
if(curCard < 0) curCard = choseCard.length-2;
image = choseCard[curCard];
$("#bigImage").attr("src", "cartes/"+cardsImage[image]);
$("#moreDatas h2").html(cardsTitle[image]);
$("#moreDatas p").html(cardsSigni[image]);
$("#confirmLast").html(cardsDescr[image]);
}).css({
left: "-178px"
});
$("#container").append(button3);
//adds a next card button
button4 = $("<div />").addClass("button").html("Carte suivante").click(function() {
curCard++;
if(curCard >= choseCard.length-1) curCard = 0;
image = choseCard[curCard];
$("#bigImage").attr("src", "cartes/"+cardsImage[image]);
$("#moreDatas h2").html(cardsTitle[image]);
$("#moreDatas p").html(cardsSigni[image]);
$("#confirmLast").html(cardsDescr[image]);
}).css({
left: "170px"
});
$("#container").append(button4);
//hides unused cards
$(".carte[data-selected!='true'], .refold").fadeOut("slow");
}
function foldSub() {
//defines top and left position of the new card
var a = (i-mid)/rad2deg - Math.PI/2;
var left = Math.cos(a)*20000/cardLimit;
var bottom = Math.sin(i/(cardLimit-1)*Math.PI)*55 + Math.abs((i-mid));
//randomizes position a bit, to looks more natural
diffL = Math.random()*6-3;
diffT = Math.random()*6-3;
//checks if the card already exists
if(!$(".carte[data-number="+i+"]").length) {
//creates the card's div and gives it its class
var carte = $("<div></div>").attr("data-number", i).addClass("carte");
var img = $("<img />").attr("src", "carte.jpg");
carte.append(img);
//adds the card to the DOM
$("#container").append(carte);
//we want rotation from -10 to +10 before randomizing
var a = (i-mid)
//rotates the card (maybe not working on IE8-)
var angle = (i-mid)*Math.abs(i-mid)/3 + (Math.random()*10-5);
carte.css("-o-transform", "rotate("+angle+"deg)");
carte.css("-moz-transform", "rotate("+angle+"deg)");
carte.css("-webkit-transform", "rotate("+angle+"deg)");
carte.css("-ms-transform", "rotate("+angle+"deg)");
carte.attr("data-angle", angle);
//over effect ...
carte.mouseover(function() {
if($(this).attr("data-selected"))
return;
l = (parseInt($(this).attr("data-number"))-mid) * 2;
t = cardHeight/3 + parseInt($(this).attr("data-number"))-mid;
$(this).animate({
left: "+="+l,
bottom: "+="+t
}, "fast");
});
//...and the out !
carte.mouseout(function() {
if($(this).attr("data-selected"))
return;
l = (parseInt($(this).attr("data-number"))-mid) * 2;
t = cardHeight/3 + parseInt($(this).attr("data-number"))-mid;
$(this).animate({
left: "-="+l,
bottom: "-="+t
}, "fast");
});
//moves the card to the current position
carte.click(chooseCard);
}
else {
//just selects it
carte = $(".carte[data-number="+i+"]");
while(carte.attr("data-selected") == "true")
carte = $(".carte[data-number="+(++i)+"]");
}
//sets card's position, and animates it
var cardWidth = $(carte).width();
var cardHeight = $(carte).height();
carte.css({
bottom: "-200px"
}).animate({
left: (left + diffL - cardWidth/2)+"px",
bottom: (bottom + diffT)+"px"
}, "fast");
//creates a new card if needed
i++;
if(i < cardLimit)
setTimeout(function() { foldSub() }, 50);
}
foldSub();
}
unfold = function(callback) {
var i = 0;
function unfoldSub(callback) {
while($(".carte[data-number="+i+"]").attr("data-selected") == "true") {
i++;
}
$(".carte[data-number="+i+"]").animate({
left: 0,
bottom: "-200px"
}, "fast");
//hide a new card if needed
i++;
if(i < cardLimit)
setTimeout(function() { unfoldSub(callback) }, 50);
else
callback();
}
unfoldSub(callback);
}
});
</script>
<style>
body {
margin: 0;
padding: 0;
}
.page {
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizinf: border-box;
position: relative;
width: 470px;
height: 460px;
overflow: hidden;
margin: 0 auto;
padding: 0 20px;
font: 13px Arial;
color: #000;
background: url("fond2.jpg");
}
.default {
background: url("fond.jpg");
}
.button {
width: 100px;
text-align: center;
display: block;
padding: 4px 2px;
border-radius: 4px;
background: rgba(255, 255, 255, 0.90);
color: #000;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
cursor: pointer;
position: absolute;
bottom: 15px;
left: 50%;
margin-left: -50px;
}
.description {
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizinf: border-box;
position: absolute;
top: 120px;
left: 50%;
background: rgba(255, 255, 255, 0.90);
width: 410px;
margin-left: -205px;
padding: 10px;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.90);
border-radius: 8px;
}
#confirmLast {
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizinf: border-box;
display: none;
cursor: pointer;
position: absolute;
left: -75px;
bottom: 135px;
z-index: 10;
background: rgba(255, 255, 255, 0.90);
padding: 10px;
width: 290px;
height: 100px;
font-size: 13px;
font-family: Verdana;
text-align: justify;
color: #000;
box-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
border-radius: 8px;
}
#confirmLast.finishBloc {
font: 14px verdana;
overflow: auto;
}
#moreDatas {
overflow: auto;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizinf: border-box;
display: none;
cursor: pointer;
position: absolute;
left: -75px;
top: 80px;
z-index: 10;
background: rgba(255, 255, 255, 0.90);
border-radius: 8px;
padding: 10px;
width: 290px;
height: 100px;
font-size: 13px;
font-family: Verdana;
text-align: center;
}
#moreDatas h2 {
margin: 5px 0 10px 0;
font-size: 24px;
font-family: Verdana;
font-style:bold;
text-align: center;
color: #993366;
}
#container {
height: 100%;
position: absolute;
left: 50%;
}
.carte {
position: absolute;
width: 50px;
height: 92px;
border-radius: 4px;
cursor: pointer;
overflow: hidden;
}
.carte img {
position: absolute;
top: 0;
left: 0;
width: 50px;
height: 92px;
cursor: pointer;
}
</style>
<!--[if IE]>
<style>
#confirmLast, .description, .button {
background: rgb(255, 255, 255);
}
#moreDatas * {
color: rgb(255, 255, 255);
}
</style>
<![endif]-->
</head>
<body>
<div class="page default" data-page="1" data-current-page="true">
<a class="button" onclick="changePage('page', 2); fold();">Continuer</a>
</div>
<div class="page" data-page="2" data-current-page="false">
<p class="description">
Prenez le bon chemin et évitez les embuches en faisant, dès maintenant, le tirage du tarot de Marseille. Les 22 lames majeures vous révèleront vos obstacles, vos atouts pour réussir votre désir ainsi que votre état d'esprit du moment. <br/>Le tirage gratuit du tarot de Marseille trois cartes s'est adapté à vos besoins pour vous apporter une interprétation rapide, simple et personnalisée des 22 lames majeures, profitez des conseils divinatoires du tarot de marseille pour réaliser vos projets.
</p>
<a class="button" onclick="changePage('page', 3); fold();">Continuer</a>
</div>
<div class="page" data-page="3" data-current-page="false">
<div id="container">
<div id="confirmLast">Cliquez ici pour afficher la dernière carte</div>
<div class="page2" id="moreDatas"></div>
</div>
<a class="button refold" onclick="unfold(function() { setTimeout('fold()', 300) });">Remélanger</a>
</div>
</body>
</html>
jordane45
Messages postés
38300
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 novembre 2024
4 704
31 janv. 2019 à 08:37
31 janv. 2019 à 08:37
pour créer une nouvelle discussion.... il suffit, lorsque tu es sur le forum
https://forums.commentcamarche.net/forum/javascript-157
de cliquer sur le bouton en haut "posez votre question" ...
NB: Pour poster du code sur le forum, merci de le faire en utilisant LES BALISES DE CODE (et en y précisant le langage afin d'avoir la coloration syntaxique)
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
.
https://forums.commentcamarche.net/forum/javascript-157
de cliquer sur le bouton en haut "posez votre question" ...
NB: Pour poster du code sur le forum, merci de le faire en utilisant LES BALISES DE CODE (et en y précisant le langage afin d'avoir la coloration syntaxique)
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
.
Modifié le 24 mars 2018 à 17:31
https://drive.google.com/open?id=1ylFvvcJjjt71La1STMWGXBW730TnOHW2
24 mars 2018 à 18:16
En gros j'aimerais divisé la chaine de caractère en un tableau grace à "split()" en fonction des atomes présent dans le tableau element, mais j'ai l'impression que ça ne fonctionne pas trop :c