diff --git a/index.html b/index.html index be6da78c5e9ec9f23846a724d7820f71b1816897..d4926418b804f1473e3e97dfc9275df19f8b8b5f 100644 --- a/index.html +++ b/index.html @@ -1,52 +1,71 @@ - Page Title - - + Page Title + +
- -
-
+ +
+
+ + + diff --git a/js/car.js b/js/car.js new file mode 100644 index 0000000000000000000000000000000000000000..56637a5b739929c85e534c8f70a8f5d30abd2064 --- /dev/null +++ b/js/car.js @@ -0,0 +1,36 @@ +function Car(image, make, model, description, price, category, year, mileage, extras) +{ + this.image = image; + this.make = make; + this.model = model; + this.description = description; + this.price = price; + this.category = category; + this.year = year; + this.mileage = mileage; + this.extras = extras; +} + +Car.prototype.generateImage = function(elt) +{ + img = document.createElement('img'); + img.setAttribute('src', this.image); + img.setAttribute('alt', this.make + this.model); + img.setAttribute('class', 'card-img-top'); + + elt.appendChild(img); +} + +Car.prototype.generateExtras = function(elt) +{ + ul = document.createElement('ul'); + + this.extras.forEach(function(elt) + { + li = document.createElement('li'); + li.innerText = elt.name + " " + elt.price; + ul.appendChild(li); + }); + + elt.appendChild(ul); +} \ No newline at end of file diff --git a/js/extra.js b/js/extra.js new file mode 100644 index 0000000000000000000000000000000000000000..c189709f11f42103baa9a5aee2a249b78c5eb7ed --- /dev/null +++ b/js/extra.js @@ -0,0 +1,5 @@ +function Extra(name, price) +{ + this.name = name; + this.price = price; +} \ No newline at end of file diff --git a/js/index.js b/js/index.js index 4e1d11911c0a43dddf4d16bc89f1d2d5005e1fb2..78ef5ed0dd4d454cb8a6f812f6eecc856e40c121 100644 --- a/js/index.js +++ b/js/index.js @@ -1,106 +1,106 @@ const extraList = [ - { name: "Jantes alliage", price: 500 }, - { name: "Toit ouvrant", price: 1000 }, - { name: "Sièges chauffants", price: 400 }, - { name: "Radar de recul", price: 200 }, - { name: "Peinture métallisée", price: 600 }, - { name: "Pack hiver", price: 800 }, - { name: "GPS intégré", price: 300 }, - { name: "Caméra de recul", price: 150 }, - { name: "Système d'aide au stationnement", price: 450 }, - { name: "Autopilot", price: 2500 }, - { name: "Peinture premium", price: 1000 }, + { name: "Jantes alliage", price: 500 }, + { name: "Toit ouvrant", price: 1000 }, + { name: "Sièges chauffants", price: 400 }, + { name: "Radar de recul", price: 200 }, + { name: "Peinture métallisée", price: 600 }, + { name: "Pack hiver", price: 800 }, + { name: "GPS intégré", price: 300 }, + { name: "Caméra de recul", price: 150 }, + { name: "Système d'aide au stationnement", price: 450 }, + { name: "Autopilot", price: 2500 }, + { name: "Peinture premium", price: 1000 }, ]; const cars = [ - generateCar( - "img/1.jpg", - "Renault", - "Clio", - "Voiture citadine 5 portes, année 2020", - 15000, - "citadine", - 2020, - 10000, - [extraList[0],extraList[3],extraList[4],extraList[6],extraList[8],extraList[9]] - ), - generateCar( - "img/2.jpg", - "Peugeot", - "208", - "Voiture citadine 5 portes, année 2021", - 16000, - "citadine", - 2021, - 5000, - [extraList[2],extraList[3]] - ), - generateCar( - "img/3.jpg", - "Volkswagen", - "Golf", - "Voiture compacte 5 portes, année 2022", - 25000, - "compacte", - 2022, - 1000, - [extraList[4],extraList[5]] - ), - generateCar( - "img/4.jpg", - "Ford", - "Focus", - "Voiture compacte 5 portes, année 2023", - 24000, - "compacte", - 2023, - 8000, - [extraList[0],extraList[1]] - ), - generateCar( - "img/5.jpg", - "Citroën", - "C4", - "Voiture compacte 5 portes, année 2020", - 22000, - "compacte", - 2020, - 15000, - [extraList[6],extraList[7]] - ), - generateCar( - "img/6.jpg", - "Toyota", - "Yaris", - "Voiture hybride 5 portes, année 2021", - 28000, - "hybride", - 2021, - 2000, - [extraList[4],extraList[8]] - ), - generateCar( - "img/7.jpg", - "Hyundai", - "Ioniq", - "Voiture électrique 5 portes, année 2022", - 35000, - "electrique", - 2022, - 500, - [extraList[0],extraList[1]] - ), - generateCar( - "img/8.jpg", - "Tesla", - "Model 3", - "Voiture électrique 4 portes, année 2023", - 50000, - "electrique", - 2023, - 1000, - [extraList[9],extraList[10]] - ), + generateCar( + "img/1.jpg", + "Renault", + "Clio", + "Voiture citadine 5 portes, année 2020", + 15000, + "citadine", + 2020, + 10000, + [extraList[0],extraList[3],extraList[4],extraList[6],extraList[8],extraList[9]] + ), + generateCar( + "img/2.jpg", + "Peugeot", + "208", + "Voiture citadine 5 portes, année 2021", + 16000, + "citadine", + 2021, + 5000, + [extraList[2],extraList[3]] + ), + generateCar( + "img/3.jpg", + "Volkswagen", + "Golf", + "Voiture compacte 5 portes, année 2022", + 25000, + "compacte", + 2022, + 1000, + [extraList[4],extraList[5]] + ), + generateCar( + "img/4.jpg", + "Ford", + "Focus", + "Voiture compacte 5 portes, année 2023", + 24000, + "compacte", + 2023, + 8000, + [extraList[0],extraList[1]] + ), + generateCar( + "img/5.jpg", + "Citroën", + "C4", + "Voiture compacte 5 portes, année 2020", + 22000, + "compacte", + 2020, + 15000, + [extraList[6],extraList[7]] + ), + generateCar( + "img/6.jpg", + "Toyota", + "Yaris", + "Voiture hybride 5 portes, année 2021", + 28000, + "hybride", + 2021, + 2000, + [extraList[4],extraList[8]] + ), + generateCar( + "img/7.jpg", + "Hyundai", + "Ioniq", + "Voiture électrique 5 portes, année 2022", + 35000, + "electrique", + 2022, + 500, + [extraList[0],extraList[1]] + ), + generateCar( + "img/8.jpg", + "Tesla", + "Model 3", + "Voiture électrique 4 portes, année 2023", + 50000, + "electrique", + 2023, + 1000, + [extraList[9],extraList[10]] + ), ]; const app = document.getElementById('app'); @@ -108,28 +108,28 @@ let index = 0; let s = ""; for (const car of cars) { - if(car !== undefined) - { - index++; + if(car !== undefined) + { + index++; - s += `
-
-
-
-
${car.make} ${car.model}
-

${car.description}

-
    -
  • Catégorie: ${car.category}
  • -
  • Prix: ${car.price} €
  • -
  • Année: ${car.year}
  • -
  • Kilométrage: ${car.mileage}
  • -
- -
-
-
-
` - } + s += `
+
+
+
+
${car.make} ${car.model}
+

${car.description}

+
    +
  • Catégorie: ${car.category}
  • +
  • Prix: ${car.price} €
  • +
  • Année: ${car.year}
  • +
  • Kilométrage: ${car.mileage}
  • +
+ +
+
+
+
` + } } s += '' @@ -137,18 +137,18 @@ app.innerHTML = s index =0; for (const car of cars) { - if(car !== undefined) - { - index++; + if(car !== undefined) + { + index++; - if(car.generateImage !== undefined) - car.generateImage(document.getElementById("img-car-"+ index)); + if(car.generateImage !== undefined) + car.generateImage(document.getElementById("img-car-"+ index)); - if(car.generateExtras !== undefined) - car.generateExtras(document.getElementById("body-car-"+ index)); + if(car.generateExtras !== undefined) + car.generateExtras(document.getElementById("body-car-"+ index)); - document.getElementById("btn-car-"+ index).addEventListener('click',(event)=>{ showHideExtra(event.target,event.target.parentElement.querySelector('.body-extra'),cars[event.target.getAttribute('data-index')]) }); + document.getElementById("btn-car-"+ index).addEventListener('click',(event)=>{ showHideExtra(event.target,event.target.parentElement.querySelector('.body-extra'),cars[event.target.getAttribute('data-index')]) }); - } + } }