[[oktatas:web:javascript|< JavaScript]]
====== Táblázat renderelése ======
* **Szerző:** Sallai András
* Copyright (c) 2024, Sallai András
* Szerkesztve: 2024
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]]
* Web: https://szit.hu
===== Bevezetés =====
Dolgozók renderelése szerkesztő és nyomógombbal.
Az onclick="" inline eseménykezelés nem működik modulok használata esetén.
===== Szimpla JavaScript =====
==== Táblázat renderelése ====
function renderTable() {
state.empList.forEach(emp => {
let tr = document.createElement('tr');
tr.innerHTML =`
${emp.id} |
${emp.name} |
${emp.city} |
${emp.salary} |
|
`;
doc.empsBody.appendChild(tr);
});
}
function updateEmployee(source) {
console.log(source.dataset.city)
}
function deleteEmployee(id) {
console.log(id)
}
==== A this függvényen belül ====
onclick="updateEmployee()"
function updateEmployee() {
const source = this.event.target;
console.log(source.dataset.city)
}
==== A setAttribute() függvény használata ====
onclick="updateEmployee()"
function updateEmployee() {
const source = this.event.target;
console.log(source.getAttribute('data-city'))
}
===== Modulhasználattal =====
const url = 'http://localhost:8000/employees';
async function getEmployees() {
try {
let response = await fetch(url);
let result = await response.json();
return result;
}catch (err) {
console.log('Hiba! A dolgozók lekérése sikertelen!');
console.log(err);
}
}
export { getEmployees }
import { getEmployees } from "./apiService.js";
const doc = {
empsBody: document.querySelector('#empsBody')
}
const state = {
empList: []
}
window.addEventListener('load', () => {
init();
});
function init() {
getEmps();
}
async function getEmps() {
state.empList = await getEmployees();
renderTable()
}
function renderTable() {
state.empList.forEach(emp => {
let tr = document.createElement('tr');
tr.innerHTML =`
${emp.id} |
${emp.name} |
${emp.city} |
${emp.salary} |
|
`;
const editBtn = tr.querySelector('button:nth-child(1)');
editBtn.addEventListener('click', () => updateEmployee(editBtn));
const delBtn = tr.querySelector('button:nth-child(2)');
delBtn.addEventListener('click', () => deleteEmployee(emp.id));
doc.empsBody.appendChild(tr);
});
}
function updateEmployee(source) {
console.log(source.dataset.city)
}
function deleteEmployee(id) {
console.log(id)
}