Reputation: 164
Since i dont know how to formulate question, i'll just try to explain what needed to be done. Program should take all values from table data and on submit button insert values of table data into input fields (each value into one input field) multyply by inserted number. I managed to take values from table data but dont know how to procced. Here is code i created for test. NOTE (pure javascript required)
<html>
<input type="text" class="class1" id="1"></br>
<input type="text" class="class1" id="2"></br>
<input type="text" class="class1" id="3"></br>
<input type="text" class="class1" id="4"></br>
<input type="text" class="class1" id="5"></br>
<table>
<tr>
<td class="class1" id="1">10</td>
</tr>
<tr>
<td class="class1" id="2">20</td>
</tr>
<tr>
<td class="class1" id="3">30</td>
</tr>
<tr>
<td class="class1" id="4">40</td>
</tr>
<tr>
<td class="class1" id="5">50</td>
</tr>
</table>
insert number<input type="text" id="text">
<input type="submit" id="submit">
<script>
var elements = document.getElementsByClassName("class1");
var vrednost = "";
for (i=0; i<elements.length; i++){
vrednost += elements[i].textContent;
}
document.write(vrednost);
</script>
Upvotes: 3
Views: 329
Reputation: 36609
Relate both the elements using
data-id
and select the element usingquerySelector
specifyingdata-id
attribute value.
Always remember that ID attribute must not be duplicate in a webpage.
You can not blindly rely on the position
of the td
and input
elements as they may not be in sync.
The Array.from() method creates a new Array instance from an array-like or iterable object.
document.getElementById('submit').addEventListener('click', function() {
var elements = document.querySelectorAll("td.class1"); //Select all `td` elements having class as `class1`
var mul = document.getElementById('text').value; //get multiplication value
Array.from(elements).forEach(function(elem) {
document.querySelector("input.class1[data-id='" + elem.dataset.id + "']").value = (+elem.textContent * +mul);
});
})
<input type="text" class="class1" data-id="1">
</br>
<input type="text" class="class1" data-id="2">
</br>
<input type="text" class="class1" data-id="3">
</br>
<input type="text" class="class1" data-id="4">
</br>
<input type="text" class="class1" data-id="5">
</br>
<table>
<tr>
<td class="class1" data-id="1">10</td>
</tr>
<tr>
<td class="class1" data-id="2">20</td>
</tr>
<tr>
<td class="class1" data-id="3">30</td>
</tr>
<tr>
<td class="class1" data-id="4">40</td>
</tr>
<tr>
<td class="class1" data-id="5">50</td>
</tr>
</table>
insert number
<input type="text" id="text">
<input type="submit" id="submit">
Upvotes: 1
Reputation: 67217
Try to use querySelectorAll
to do your job effectively,
var tds = document.querySelectorAll("table td.class1");
var inputs = document.querySelectorAll("input[type='text'].class1");
Array.from(inputs).forEach(function(elm, i){
elm.value = tds[i].textContent;
});
Upvotes: 1