var getRadioValue = function(name) {
var radios = document.getElementsByName(name);
for (var i = 0, length = radios.length; i < length; ++i) {
if (radios[i].checked) {
return radios[i].value
}
}
return null;
};
var Actions = {
addPrompt: function(i) {
var value = getRadioValue('fruit-fresh-' + i);
if (value == "no") {
prompt('Why is ' + fruits[i] + ' not fresh? Explain:');
}
else if (value == "yes") {
alert('We are glad that ' + fruits[i] + ' is fresh! Good job!');
}
else {
alert('Please, check the corresponding value for ' + fruits[i] + ' freshness!');
}
},
save: function(i) {
alert('Saving: ' + fruits[i]);
},
generateMarkupForFruit: function(i, fruitName) {
var template = document.querySelector('#fruits-template');
var row = document.importNode(template.content, true);
var fruitId = 'fruit-' + i,
fruitField = row.querySelector('.fruit'),
fruitLabel = row.querySelector('.fruit-label');
fruitField.value = fruitName;
fruitField.setAttribute('id', fruitId);
fruitLabel.textContent = fruitName;
fruitLabel.setAttribute('for', fruitId);
var yesId = 'fruit-yes-' + i,
noId = 'fruit-no-' + i,
groupId = 'fruit-fresh-' + i,
yesField = row.querySelector('.yes'),
yesLabel = row.querySelector('.yes-label'),
noField = row.querySelector('.no'),
noLabel = row.querySelector('.no-label');
yesField.setAttribute('name', groupId);
yesField.setAttribute('id', yesId);
yesLabel.setAttribute('for', yesId);
noField.setAttribute('name', groupId);
noField.setAttribute('id', noId);
noLabel.setAttribute('for', noId);
var addPromptBtn = row.querySelector('.add-prompt-btn'),
saveBtn = row.querySelector('.save-btn');
addPromptBtn.addEventListener('click', Actions.addPrompt.bind(null, i));
saveBtn.addEventListener('click', Actions.save.bind(null, i));
return row;
}
};
var fruits = ["Apple", "Banana", "Grapes"];
var table = document.querySelector('#fruits');
for (var i = 0; i < fruits.length; ++i)
{
var row = Actions.generateMarkupForFruit(i, fruits[i]);
table.appendChild(row);
}
#fruits {
width: 100%;
border-collapse: collapse;
}
#fruits td,
#fruits th {
border: solid 1px;
padding: 0.25em;
}
#fruits th {
color: #fff;
background: #000;
}
#fruits .actions {
text-align: center;
}
#fruits .actions .save-btn {
font-weight: bold;
}
<table id="fruits">
<tr>
<th>Fruit</th>
<th>Is fruit fresh?</th>
<th>Actions</th>
</tr>
</table>
<template id="fruits-template">
<tr>
<td>
<input type="checkbox" class="fruit">
<label class="fruit-label"></label>
</td>
<td>
<input type="radio" class="yes" value="yes">
<label class="yes-label">Yes</label>
<input type="radio" class="no" value="no">
<label class="no-label">No</label>
</td>
<td class="actions">
<button type="button" class="add-prompt-btn">Add Prompt</button>
<button type="button" class="save-btn">Save</button>
</td>
</tr>
</template>