0
i am with a code that, render the elements of the Array on the screen, and each element of the Array
, has a button delete
next door.
I wanted to know how to delete it from Array
and consequently remove it from the screen and in place of the element that was excluded appear the element that was below it.
I have this code:
let pageCurrent = 0;
let elementsPerPage = 3;
let novoArray = [];
const observation = document.getElementById('obs');
const names = [
{id:0, name:"Jean"},
{id:2, name:"Ricardo"},
{id:9, name:"Tamyres"},
{id:11, name:"Abellll"}];
const filterArrayObjectForArray = names.map(names => names.name);
render();
const changeAmountOfElementsInPage = (valueSelect) => {
elementsPerPage = valueSelect.value;
pageCurrent = 0;
render();
}
const next = () => {
const namesFiltered = filterArrayObjectForArray.filter(filterName);
if ((pageCurrent + 1) * elementsPerPage < namesFiltered.length) {
pageCurrent++;
render();
}
}
const previous = () => {
if ((pageCurrent - 1) * elementsPerPage >= 0)
pageCurrent--;
render()
}
function render() {
const renderElements = (text, position)=>{
const placeOfElements = document.getElementById("resultado");
const elementUl = document.createElement('UL');
const elementButton = document.createElement('BUTTON');
const textButton = document.createTextNode('Delete');
const elementsPerPageUl = document.createTextNode(text+' ');
elementButton.className='btn btn-danger btn-xs'
elementButton.appendChild(textButton);
elementUl.appendChild(elementsPerPageUl);
elementUl.appendChild(elementButton);
placeOfElements.appendChild(elementUl);
elementButton.onclick = function(element) {
placeOfElements.removeChild(elementUl);
}
}
const filterPositionOfElement = (_, position, arr) => {
const isBiggerThanZero = position >= 0;
const isGteStart = position >= pageCurrent * elementsPerPage;
const isLtFinish = position < (pageCurrent + 1) * elementsPerPage;
const isLtArrLength = position < arr.length;
return isGteStart && isLtFinish && isLtArrLength && isBiggerThanZero
}
const filteredNames = filterArrayObjectForArray.filter(filterName);
document.getElementById("resultado").innerHTML = '';
filteredNames.filter(filterPositionOfElement).forEach(renderElements)
}
function filterName(str) {
const wordForFilter = document.getElementById('valorInput').value;
if (str.indexOf(wordForFilter) !== -1) {
return str;
}
}
function find() {
pageCurrent = 0;
render();
}
<head>
<link rel="stylesheet" type="text/css" href="project.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
</head>
<div id='programa1'>
<img id='icon-search' src='https://cdn2.iconfinder.com/data/icons/picons-essentials/57/search-128.png' width=20px> <input id='valorInput' />
<button type="button" class="btn btn-dark " id="buscar" onClick='find()'>Search</button>
<div id='buttons'>
<button type="button" class="btn btn-primary" id='proximo' onClick="previous()"> Previous </button>
<button type="button" class="btn btn-primary" ID='anterior' onClick="next()">Next</button>
</div>
<div id="resultado"> Carregando... </div>
Deseja ver quantos elementos por vez:
<select id='select' onchange="changeAmountOfElementsInPage(this)">
<option value="3" >3</option>
<option value="5" >5</option>
<option value="10" >10</option>
</select>
<h3 id='obs'> </h3>
</div>
</div>
<script type="text/javascript" src="project.js"> </script>
The commented line was what I tried to do by putting a removeChild
but did not give the expected result, because when it gives next
and then previous
he comes back.