is there a better way to optimize my code and to avoid duplication
JavaScript
x
33
33
1
let results1 = document.getElementById("results1");
2
let results2 = document.getElementById("results2");
3
let results3 = document.getElementById("results3");
4
5
6
results1.innerHTML = '50 %';
7
results2.innerHTML = '100 $';
8
results3.innerHTML = '150 $';
9
10
document.querySelector("div.btn-group").addEventListener("click", function(evt) {
11
if (evt.target.type === "radio") {
12
13
14
if (evt.target.value == 0) {
15
16
console.log(evt.target.value)
17
18
results1.innerHTML = '50 %';
19
results2.innerHTML = '100 $';
20
results3.innerHTML = '150 $';
21
}
22
if (evt.target.value == 1) {
23
results1.innerHTML = '150 %';
24
results2.innerHTML = '200 $';
25
results3.innerHTML = '350 $';
26
}
27
if (evt.target.value == 2) {
28
results1.innerHTML = '250 %';
29
results2.innerHTML = '300 $';
30
results3.innerHTML = '450 $';
31
}
32
}
33
});
JavaScript
1
32
32
1
Select your plan
2
3
<div class="btn-group border" data-toggle="buttons">
4
<label id='RADIO' class="btn btn-light">
5
<input type="radio" name="test" value="0" checked> weekly
6
</label>
7
<label class="btn btn-light">
8
<input type="radio" name="test" value="1"> monthly
9
</label>
10
<label class="btn btn-light">
11
<input type="radio" name="test" value="2"> yearly
12
</label>
13
</div>
14
15
<table class="table mt-4">
16
<tr>
17
<th>Weekly</th>
18
<th>Montly</th>
19
<th>Yearly</th>
20
</tr>
21
<tr>
22
<td><span id="results1"></span></td>
23
<td><span id="results2"></span></td>
24
<td><span id="results3"></span></td>
25
</tr>
26
<tr>
27
<td>full access</td>
28
<td>free support</td>
29
<td>everything</td>
30
</tr>
31
32
</table>
Advertisement
Answer
You can store the values directly inside the option
element as data-*
attributes and read them in the event handler
JavaScript
1
16
16
1
let results1 = document.getElementById("results1");
2
let results2 = document.getElementById("results2");
3
let results3 = document.getElementById("results3");
4
5
6
results1.innerHTML = '50 %';
7
results2.innerHTML = '100 $';
8
results3.innerHTML = '150 $';
9
10
document.querySelector("div.btn-group").addEventListener("click", function(evt) {
11
if (evt.target.type === "radio") {
12
results1.innerHTML = evt.target.dataset.r1
13
results2.innerHTML = evt.target.dataset.r2
14
results3.innerHTML = evt.target.dataset.r3
15
}
16
});
JavaScript
1
32
32
1
Select your plan
2
3
<div class="btn-group border" data-toggle="buttons">
4
<label id='RADIO' class="btn btn-light">
5
<input type="radio" name="test" value="0" checked data-r1="50 %" data-r2="100 $" data-r3="150 $"> weekly
6
</label>
7
<label class="btn btn-light">
8
<input type="radio" name="test" value="1" data-r1="150 %" data-r2="200 $" data-r3="350 $"> monthly
9
</label>
10
<label class="btn btn-light">
11
<input type="radio" name="test" value="2" data-r1="250 %" data-r2="300 $" data-r3="450 $"> yearly
12
</label>
13
</div>
14
15
<table class="table mt-4">
16
<tr>
17
<th>Weekly</th>
18
<th>Montly</th>
19
<th>Yearly</th>
20
</tr>
21
<tr>
22
<td><span id="results1"></span></td>
23
<td><span id="results2"></span></td>
24
<td><span id="results3"></span></td>
25
</tr>
26
<tr>
27
<td>full access</td>
28
<td>free support</td>
29
<td>everything</td>
30
</tr>
31
32
</table>