AIM: On the page, display the price of the mobile-based in three different colors. Instead of using the number in our code, represent them by string values like GoldPlatinum, PinkGold, SilverTitanium.
Create two files: mobileprice.html and mobileprice.ts
mobileprice.html
<!DOCTYPE html>
<html lang="en">
<head>
<title>Mobile Price</title>
<script src="mobileprice.js"></script>
<style>
.btn{
border-style: none;
background-color: tomato;
font-family: 'Courier New';
font-size: 16px;
font-weight: bold;
color: white;
padding: 0px 50px;
}
</style>
</head>
<body>
<div style="text-align: center;"><h1>MOBILE STORE</h1></div>
<div style="background-color: tomato;height: 25px;text-align: center;">
<button class="btn" onclick="DisplayMobiles('Gold')">GoldPlatinum</button>
<button class="btn" onclick="DisplayMobiles('Pink')">PinkGold</button>
<button class="btn" onclick="DisplayMobiles('Silver')">SilverTitanium</button>
</div>
<div id="root"></div>
</body>
</html>
mobileprice.ts
var mobileinfo = [
{model: 'Motorola Edge 30 Fusion',imageurl: 'images/GoldMoto.jpg',color: 'Gold',price: 'Rs. 39,999'},
{model: 'Vivo T2x',imageurl: 'images/GoldVivo.jpg',color: 'Gold',price: '13,899'},
{model: 'Realme 11',imageurl: 'images/GoldRealMe.jpg',color: 'Gold',price: '17,399'},
{model: 'Redmi 6A',imageurl: 'images/PinkRedmi.jpg',color: 'Pink',price: '5,300'},
{model: 'Nokia 4.2',imageurl: 'images/PinkNokia.jpg',color: 'Pink',price: '13,699'},
{model: 'Motorola G32',imageurl: 'images/SilverMoto.jpg',color: 'Silver',price: '10,780'},
{model: 'Samsung Galaxy F54',imageurl: 'images/SilverSamsung.jpg',color: 'Silver',price: '24,895'},
{model: 'Redmi 10T',imageurl: 'images/SilverRedmi.jpg',color: 'Silver',price: '21,999'}
]
function DisplayMobiles(colorname){
var root = document.getElementById('root') as HTMLDivElement
root.innerHTML = ""
var displaymobiles = document.createElement('div')
mobileinfo.forEach((mobile)=>{
if(colorname==mobile.color){
var m = document.createElement('div')
var mobileimg = document.createElement('img')
mobileimg.setAttribute('src',mobile.imageurl)
mobileimg.setAttribute('width','250px')
mobileimg.setAttribute('height','300px')
m.appendChild(mobileimg)
var mobiledesc = document.createElement('p')
mobiledesc.innerHTML = mobile.model
m.appendChild(mobiledesc)
var mobileprice = document.createElement('p')
mobileprice.innerHTML = mobile.price
m.appendChild(mobileprice)
displaymobiles.appendChild(m)
}
})
root.appendChild(displaymobiles)
}
AIM: Define a function inside the event handler to filter the product array with the selected product object using the productId received by the function.
Create two files: mobilefilter.html and mobilefilter.ts
mobilefilter.html
<!DOCTYPE html>
<html lang="en">
<head>
<title>Mobile Filter</title>
<script src="mobilefilter.js"></script>
</head>
<body>
<form name="filterin">
<input type="text" name="prodid" placeholder="Product ID" />
<button type="button" onclick="DisplayMobiles(document.filterin.prodid.value)">Filter</button>
</form><br>
<div id="MobileInfo"></div>
<script>
DisplayMobiles("")
</script>
</body>
</html>
mobilefilter.ts
var mobiles = [
{prodID:'M101',model:'Motorola Edge 30 Fusion',price:'Rs. 39,999 /-'},
{prodID:'M102',model:'Motorola G42',price:'Rs. 10,299 /-'},
{prodID:'M103',model:'Motorola e32s',price:'Rs. 12,299 /-'}
]
function DisplayMobiles(searchText){
var mi = document.getElementById("MobileInfo") as HTMLInputElement
mi.innerHTML = ""
var table = document.createElement('table')
table.setAttribute('border','1')
var tr = document.createElement('tr')
var th1 = document.createElement('th')
th1.innerHTML = "Product ID"
tr.appendChild(th1)
var th2 = document.createElement('th')
th2.innerHTML = "Model"
tr.appendChild(th2)
var th3 = document.createElement('th')
th3.innerHTML = "Price"
tr.appendChild(th3)
table.appendChild(tr)
mobiles.forEach(m => {
if(searchText==m.prodID || searchText==""){
var nexttr = document.createElement('tr')
var td1 = document.createElement('td')
td1.innerHTML = m.prodID
nexttr.appendChild(td1)
var td2 = document.createElement('td')
td2.innerHTML = m.model
nexttr.appendChild(td2)
var td3 = document.createElement('td')
td3.innerHTML = m.price
nexttr.appendChild(td3)
table.appendChild(nexttr)
}
});
mi.appendChild(table)
}